【发布时间】:2012-08-10 03:52:13
【问题描述】:
Visual Studio 2010,C#
我有一个ComboBox,其中一个DropDown、AutoComplete 设置为SuggestAppend,而AutoCompleteSource 来自ListItems。用户将数据键入其中,直到输入正确为止。在数据与列表项之一匹配之前,组合框旁边的按钮将被禁用。
如果用户点击 tab 键,自动完成功能会接受当前的建议。它还移动到启用的选项卡序列中的下一个控件。当然,因为我希望它转到禁用按钮,所以我需要在验证条目后立即启用它。
问题是我尝试过的所有事件PreviewKeyDown、LostFocus、SelectedIndexChanged 都不允许我及时启用按钮以使其被处理并获得焦点。它总是按 Tab 键顺序转到下一个按钮,该按钮始终处于启用状态。
我已经准备好让按钮保持启用状态,如果过早按下它会报错,但我不想那样做。我也不想使用特殊模式标志来跟踪这些控件何时获得焦点。验证似乎是正常的事情,但我被卡住了。
如果SelectedIndexChanged 在用户进行匹配时有效,这将很容易。当框清除或找到键入的匹配项时,它不会触发。
【问题讨论】:
标签: c# winforms events windows-controls