当键入光标在文本框中时,我想要抓住箭头键, 做一些处理然后防止这个事件被输入处理。
在$drive=gwmi win32_logicaldisk -Filter "deviceid='c:'"
$usedspace = $drive.Size -$drive.FreeSpace
活动中,我们可以KeyPress
KeyPressEventArgs
处理。
但箭头键不会触发e.Handled=false;
事件。
我已尝试使用KeyPress
然后使用int e.IsInputKey = true;
事件,如MS所说。
Msdn Control.PreviewKeyDown Event
但似乎KeyDown
也不起作用。
这是我目前的代码
e.Handled=false;
我想更改TextBox中默认的按箭头行为,它会移动光标。我不想在" r"之间键入光标。和" l" (上图)可以移动。
有什么建议吗?
答案 0 :(得分:1)
问题很模糊,它没有描述需要采取不同行为的特定光标键。重要的是,TextBox已经将右和左光标键转换为输入键。这样他们就不会被用于控制之间的导航。如果要拦截向上/向下光标键,则只需要PreviewKeyDown。在KeyDown事件处理程序中实现行为。
意图也很模糊,我只是给出一个非常愚蠢的例子来交换光标键的方向:
private void textBox1_KeyDown(object sender, KeyEventArgs e) {
var box = (TextBox)sender;
if (e.KeyData == Keys.Left) {
if (box.SelectionStart < box.Text.Length)
box.SelectionStart++;
e.Handled = true;
} else if (e.KeyData == Keys.Right) {
if (box.SelectionStart > 0)
box.SelectionStart--;
e.Handled = true;
}
}
请注意e.Handled
必须如何设置为 true ,以确保键击不会传递给控件。