5

是否可以禁用对控件的键盘输入?例如一个ListView?我怎么做?我尝试过覆盖这些KeyUp KeyDown事件,但显然不是这样?

IsEnabled是一个很好的解决方案,但是我只想禁用键盘交互并保持鼠标交互不变。

4

5 回答 5

14

处理该KeyDown事件为时已晚,但您可以处理PreviewKeyDown事件,这应该会为您提供您正在寻找的行为:

private void MyListBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
   e.Handled = true;
}
于 2010-02-09T15:59:30.470 回答
5

亲爱的 maciek,您唯一需要做的就是使用 OnKeyDown 事件

private void txtInput_KeyDown(object sender, KeyEventArgs e)
    {
            e.Handled = true; // user can input
            e.Handled = false; // user cannot input
    }
于 2010-02-08T11:51:42.183 回答
2

如果您在其中执行以下操作,KeyDown 通常对我有用:

e.Handled = true;
e.SuppressKeyPress = true;

一个更完整的实际应用示例(禁用非数字字符的输入):http ://cccontrols.codeplex.com/SourceControl/changeset/view/34146#611536

约翰提出了一个很好的观点。您想禁用与Control但未设置的交互的任何原因Enabled= false

编辑:我刚刚注意到 WPF 标签。因为我讨厌 WPF,所以我不再那么确定我的答案了 ;-)

于 2010-02-08T08:26:05.990 回答
1

这就是WebControl.Enabled = false;防止它响应用户输入的目的。

编辑:现在问题已经改变,禁用控件不再是解决方案。但是我认为通过非键盘响应鼠标点击的控件是错误的,不是每个人都喜欢使用鼠标。

于 2010-02-08T08:25:12.920 回答
0

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.

于 2019-04-19T10:28:14.023 回答