有没有可能禁用控件的键盘输入?例如 ListView
?我该怎么做?我尝试重写 KeyUp
和 KeyDown
事件,但显然那不是正确的方法。
IsEnabled
是一个好的解决方案,但我只想禁用键盘交互,而保留鼠标交互。
有没有可能禁用控件的键盘输入?例如 ListView
?我该怎么做?我尝试重写 KeyUp
和 KeyDown
事件,但显然那不是正确的方法。
IsEnabled
是一个好的解决方案,但我只想禁用键盘交互,而保留鼠标交互。
处理 KeyDown
事件太晚了,但是你可以处理 PreviewKeyDown 事件,这应该可以给你想要的行为:
private void MyListBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
e.Handled = true;
}
private void txtInput_KeyDown(object sender, KeyEventArgs e)
{
e.Handled = true; // user can input
e.Handled = false; // user cannot input
}
如果你按照以下方式使用KeyDown,它通常会对我有用:
e.Handled = true;
e.SuppressKeyPress = true;
Control
与否没有设置Enabled
= false
的原因吗?
编辑: 我刚刚注意到WPF标签。由于我是WPF haters,所以对我的答案不太确定了;-)WebControl.Enabled = false;
的目的是防止它响应用户输入。
编辑:现在问题已经改变,禁用控件不再是一个解决方案。然而,我认为一个通过鼠标点击而不是键盘响应的控件是有缺陷的,并非每个人都喜欢使用鼠标。
KeyPressEventArgs.Handled
:获取或设置一个值,指示是否已处理KeyPress事件。
属性值
Boolean
如果事件已处理,则为true
;否则为false
。
如果您设置e.Handled = true
,键盘事件将不再分派。