是否可以禁用控件的键盘输入?例如ListView
?我怎么做?我已经尝试重写KeyUp
KeyDown
事件,但显然那不是这样的?
IsEnabled
是一个很好的解决方案,但我只希望禁用键盘交互并保持鼠标交互不变。
处理KeyDown
事件为时已晚,但你可以处理PreviewKeyDown事件,这应该会给你你正在寻找的行为:
private void MyListBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
e.Handled = true;
}
亲爱的maciek,你唯一需要做的就是使用OnKeyDown事件
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;
一个更完整的示例,包含实际应用程序(禁用非数字字符的输入):http://cccontrols.codeplex.com/SourceControl/changeset/view/34146#611536
约翰提出了一个很好的观点。你有什么理由想要禁用与Control
的交互但不设置Enabled
= false
?
编辑:我刚注意到WPF标签。因为我是WPF仇恨者,所以不再确定我的答案了;-)
这就是WebControl.Enabled = false;
阻止它响应用户输入的目的。
编辑:现在问题已经改变,禁用控件不再是一个解决方案。但是我认为通过非键盘响应鼠标点击的控件是错误的,并不是每个人都喜欢使用鼠标。
KeyPressEventArgs.Handled
:获取或设置一个值,指示是否处理了KeyPress事件。
物业价值Boolean
true
如果事件被处理;否则,false
。
如果你设置e.Handled = true
,键盘事件不再发送。