我刚刚在TextBox
中实现了一个快速自动完成功能,可以从一个相当小的列表中拉出一个字符串并“完成”该单词。 TextBox
插入符号位于最后一个按键所在的位置,并且用户尚未键入的单词部分将突出显示,这样开始键入其他内容将删除输入的此部分。
粘贴器是我需要它,以便在完成和部分突出显示时,空格键作为“接受”键 - 例如它将插入符号移动到完成的单词的末尾。然而,无论我似乎做什么,击中空格都会删除单词中突出显示的部分(用空格字符替换它,就像你击中任何其他键一样)。
我试过这个:
private void textBoxIncidentLogTypes_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Space)
{
textBoxIncidentLogTypes.CaretIndex = textBoxIncidentLogTypes.Text.Length;
}
}
但是当这个“有用”时,它会在之后被解雇空格键已经拆除了一个短语的最佳部分。是否有任何方法可以在键入TextBox
之前捕获按键?
答案 0 :(得分:2)
尝试处理PreviewKeyDown事件;它应该在之前发生 TextBox有机会处理密钥。
根据您是否希望TextBox
也处理空格键(即移动插入符后插入空格),可以将PreviewKeyDown中的e.Handled
设置为{{1} (不再做任何处理)或true
(让TextBox也处理空格键)。
答案 1 :(得分:1)
尝试使用PreviewKeyDown事件代替KeyDown事件,并将KeyEventArgs e.Handled属性设置为true!
private void textBoxIncidentLogTypes_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Space)
{
textBoxIncidentLogTypes.CaretIndex = textBoxIncidentLogTypes.Text.Length;
e.Handled = true;
}
}