是否可以禁用控件的键盘输入?例如ListView
?我怎么做?我已经尝试重写KeyUp
KeyDown
事件,但显然不是这样的?
IsEnabled
是一个很好的解决方案,但我只想禁用键盘交互并保持鼠标交互不变。
答案 0 :(得分:13)
处理KeyDown
事件为时已晚,但您可以处理PreviewKeyDown事件并且应该为您提供所需的行为:
private void MyListBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
e.Handled = true;
}
答案 1 :(得分:4)
亲爱的maciek,您唯一需要做的就是使用OnKeyDown事件
private void txtInput_KeyDown(object sender, KeyEventArgs e)
{
e.Handled = true; // user can input
e.Handled = false; // user cannot input
}
答案 2 :(得分:3)
如果您在其中执行以下操作,KeyDown通常适用于我:
e.Handled = true;
e.SuppressKeyPress = true;
包含实际应用程序的更完整示例(禁用非数字字符的输入):http://cccontrols.codeplex.com/SourceControl/changeset/view/34146#611536
但是约翰提出了一个很好的观点。您是否有任何理由要禁用与Control
的互动但未设置Enabled
= false
?
编辑:我刚注意到了WPF标记。因为我是WPF仇恨者,所以不再确定我的答案了; - )
答案 3 :(得分:1)
WebControl.Enabled = false;
的目的是阻止它响应用户输入。
编辑:现在问题已经改变,禁用控件不再是解决方案。但是我认为通过非键盘响应鼠标点击的控件是 buggy ,并非所有人都喜欢使用鼠标。
答案 4 :(得分:0)
KeyPressEventArgs.Handled
:获取或设置一个值,该值指示是否已处理KeyPress事件。
财产价值
Boolean
true
(如果事件已处理);否则为false
。
如果您设置了e.Handled = true
,则不再分配键盘事件。