我想检测按键是否会导致WPF ]
的{{1}}事件中的square bracket KeyDown
结束:
Popup
解决方案必须适用于任何键盘布局。请注意,不同布局的关键映射通常会有很大差异。因此,检查正确的组合键(例如德语QWERTZ键盘上的 private void MyPopup_KeyDown(object sender, KeyEventArgs e)
{
if (theKeyStrokeWouldResultIsAClosingSquareBracket)
{
// ...
// do stuff
// ...
e.Handled = true;
}
}
或美国QUERTY键盘上的Ctrl + Alt + Digit 9
)是不可能的解决方法。
尽管有这些问题,你怎么能完成这样的检测?
编辑 - 在开始赏金之前添加一些信息:
我目前正在当前的项目中实现类似IntelliSense的功能。 IntelliSense的灵感源于:http://www.codeproject.com/Articles/22803/Intellisense-like-Method-Selection-Pop-up-Window
自定义语法允许使用OemCloseBrackets
这样的表达式,其中用户应该能够使智能感知功能自动完成括号中的文本。为了使intellisense函数与Visual Studio(以及许多其他IDE)的行为更相似,我想让用户在弹出的列表框中键入一个结束方括号以强制自动完成。
答案 0 :(得分:4)
您应该使用PreviewTextInput
事件 - 这将获得TextCompositionEventArgs
参数,其Text
属性将成为结束括号。
答案 1 :(得分:2)
您可以在弹出式窗口中添加透明TextBox
,并在其上订阅TextChanged
事件,而不是Popup
上的事件。
答案 2 :(得分:1)
如果它是一个组合键,我认为你不能使用按键事件捕获它。
if(e.Key == Key.OemCloseBrackets) {
}
是使用英文键盘的简单案例的正确方法。如果您想要处理您所描述的德语键盘,您应该在正在使用键盘事件调用的文本框上进行字符串比较。
if(txtKeypad.Text.Substring(txtKeypad.Text.Length - 1,1)==“]”)
我希望这会有所帮助。
版