C# 按键关闭事件不存在';ComboBox打开时不工作?
为什么在打开组合框下拉列表时,C# 按键关闭事件不存在';ComboBox打开时不工作?,c#,xaml,windows-runtime,uwp,C#,Xaml,Windows Runtime,Uwp,为什么在打开组合框下拉列表时,KeyDown事件未触发? 有没有办法触发这个 我试图使用KeyDown事件来检查按下了哪个键,并从组合框中自动选择一个项目,该组合框以按下的字符开始,模拟部分自动完成功能。但是当组合框打开时,这不起作用 代码: statusComboBox.ItemsSource=inspectionStatusComboList; private void组合框\u KeyDown(对象发送器,KeyRoutedEventArgs e) { ComboBox=发送方作为Com
KeyDown
事件未触发?
有没有办法触发这个
我试图使用KeyDown
事件来检查按下了哪个键,并从组合框中自动选择一个项目,该组合框以按下的字符开始,模拟部分自动完成功能。但是当组合框
打开时,这不起作用
代码:
statusComboBox.ItemsSource=inspectionStatusComboList;
private void组合框\u KeyDown(对象发送器,KeyRoutedEventArgs e)
{
ComboBox=发送方作为ComboBox;
int指数=-1;
字符串key=e.key.ToString();
如果(key.Length==1)
{
开关(box.Name)
{
案例“statusComboBox”:
index=inspectionStatusComboList.IndexOf(inspectionStatusComboList.FirstOrDefault(x=>x.StartsWith(key));
打破
}
box.SelectedIndex=索引;
}
}
下面是我试图实现的一个片段。
尝试将KeyRoutedEventArgs更改为KeyEventArgs,并查看您的运行情况,因为我们无法查看代码的其余部分来查看您是否创建了路由我可以想象下拉式弹出窗口会获得焦点,因此您必须访问该窗口并订阅该窗口上的关键事件。参考模板。您可以尝试在弹出菜单
或弹出菜单
元素上订阅这些事件
您也可以使用my中的。显示一些代码,否则很难找到help@MikaelPuusaari:添加了代码。是否尝试捕获预览事件而不是实际事件?@LordWilmore:预览事件?UIElement.PreviewKeyDown。你能详细说明一下吗?因为我不能仅仅替换它,因为它不会匹配任何重载的KeyDown事件?嘿,Filip,谢谢你的帮助,我已经尝试了你工具包中的AutoCompleteTextBox,首先非常感谢你的帮助,但是就像我的例子一样,我需要下拉列表,即使文本框中没有值,我也无法用你的工具包实现这一点。是否有其他替代方案?您是指替代的自动完成实施方案?我肯定有。您也可以从工具箱中获取一个,并进行更改以使其适合您。
<ComboBox x:Name="statusComboBox" KeyDown="ComboBox_KeyDown"/>
statusComboBox.ItemsSource = inspectionStatusComboList;
private void ComboBox_KeyDown(object sender, KeyRoutedEventArgs e)
{
ComboBox box = sender as ComboBox;
int index = -1;
string key = e.Key.ToString();
if (key.Length == 1)
{
switch(box.Name)
{
case "statusComboBox":
index = inspectionStatusComboList.IndexOf(inspectionStatusComboList.FirstOrDefault(x => x.StartsWith(key)));
break;
}
box.SelectedIndex = index;
}
}