是否可以禁用对控件的键盘输入?例如一个ListView
?我怎么做?我尝试过覆盖这些KeyUp
KeyDown
事件,但显然不是这样?
IsEnabled
是一个很好的解决方案,但是我只想禁用键盘交互并保持鼠标交互不变。
是否可以禁用对控件的键盘输入?例如一个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
: Gets or sets a value indicating whether the KeyPress event was handled.
Property Value
Boolean
true
if the event is handled; otherwise, false
.
if you set e.Handled = true
, keyboard event not dispatch anymore.