【发布时间】:2014-02-27 09:10:44
【问题描述】:
我有 2 个 ComboBoxes 里面有数据。当我在 first ComboBox 中写入项目名称的一些字母然后按 Tab 键时,焦点移至下一个控件,但显示的项目与按 Tab 键之前的不同。在 Second ComboBox 中,数据与第一个中的所选项目相关,但检索到的数据基于未显示的选项卡之前选择的项目。 我的问题是:为什么会这样?如何解决这个问题?
【问题讨论】:
我有 2 个 ComboBoxes 里面有数据。当我在 first ComboBox 中写入项目名称的一些字母然后按 Tab 键时,焦点移至下一个控件,但显示的项目与按 Tab 键之前的不同。在 Second ComboBox 中,数据与第一个中的所选项目相关,但检索到的数据基于未显示的选项卡之前选择的项目。 我的问题是:为什么会这样?如何解决这个问题?
【问题讨论】:
我知道这已经过时了,但这是我发现的唯一符合我的场景的问题,并且我找到了一个令我满意的解决方案。
本质上发生的事情是,在 Winforms 应用程序 ComboBox 中,tab 键四处走动,最终确定您的选择,然后移动到下一个控件。因此,您的 ComboBox 最终会被扔回选择列表中看似随机的项目。这里的预期流程似乎是找到您的项目,单击它或按 Enter,然后按 Tab。所以我通过覆盖拥有 ComboBox 的 Form 上的 ProcessCmdKey 来解决这个问题,只要下拉 ComboBox,Tab 键就会像 Enter 一样。
这是我决定的一个例子:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
if (this.youComboBox.DroppedDown && keyData == Keys.Tab)
{
SendKeys.Send("{ENTER}");
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
【讨论】:
请尝试将组合框 DropDownStyle 设置为 DropDownList 而不是 DropDown。
如果这不是您要搜索的内容,请同时尝试以下内容:
WPF ComboBox selection change after switching tabs http://www.telerik.com/forums/combobox-value-changes
【讨论】: