【发布时间】:2009-06-12 22:38:11
【问题描述】:
我在表单上有一个 TComboBox。它的 Style 属性设置为 csDropDownList。如果我打开下拉列表并使用鼠标或键盘选择一个选项并按 ENTER,则下拉框将关闭,并且 ItemIndex 属性会在 KeyPress 事件处理程序被触发之前更改。如果我点击 TAB,下拉列表不会消失,直到 KeyPress 事件处理程序被触发并且焦点已经离开控件,并且 ItemIndex 没有得到更新;它会恢复到我打开列表之前选择的任何内容。
如果我希望 TAB 将 ItemIndex 更新为下拉列表中当前选择的任何内容,我将如何实现它?
【问题讨论】:
-
我觉得你向 Steven 和 Francois 提问通常是最常见的答案,这很有趣,特别是因为 Steven 坐在你身后。
-
如果您使用键盘在组合框中选择一个值,您应该考虑只使用键盘,而不是打开组合框下拉菜单。通过向上和向下箭头,您可以直接更改所选项目(和 ItemIndex 属性值),并且选项卡将正常工作。同意,您无需对下拉列表中的项目列表进行监督,但如果项目很多,界面架构师应该想知道组合框是否是该工作的正确控件。
-
同意 Stijn 和 skamradt,并根据这些 cmets,我建议您非常不愿意更改通用界面元素的默认行为(除非默认行为明显不标准) .