2010-02-08 82 views
4

是否可以禁用键盘输入到控件?例如一个ListView?我怎么做?我尝试覆盖KeyUpKeyDown事件,但显然这不是方式?我可以禁用键盘输入到特定控件吗?

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

+0

所以,你只是想惩罚键盘用户? – 2010-02-08 20:18:00

+0

的确 - 我知道。我正在寻找仅鼠标 – Maciek 2010-02-09 06:23:39

回答

10

处理KeyDown事件太晚,但你可以处理PreviewKeyDown事件,并应该给你你正在寻找的行为:

private void MyListBox_PreviewKeyDown(object sender, KeyEventArgs e) 
{ 
    e.Handled = true; 
} 
1

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

编辑:现在问题已经改变,禁用控件不再是一个解决方案。不过,我认为一个控制,响应鼠标点击不键盘是越野车,不是每个人都喜欢使用鼠标。

+0

我应用了一个减号点,导致此方法将禁用该控件,并且解决方案 – 2010-02-08 11:52:47

3

的KeyDown通常也适用于我,如果你在它下面:

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

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

约翰使得不过好点。任何原因你想要禁用与Control交互但不设置Enabled = false

编辑:我只注意到了WPF标签。不敢肯定我的回答了,因为我是一个WPF憎恨;-)

+1

无法访问e.SuppressKeyPress:/ – Maciek 2010-02-08 10:21:55

3

亲爱maciek,你需要使用的onkeydown事件唯一可以做的THIG只是做

private void txtInput_KeyDown(object sender, KeyEventArgs e) 
    { 
      e.Handled = true; // user can input 
      e.Handled = false; // user cannot input 
    } 
+0

我试了一下,但没有成功为了我。 – Maciek 2010-02-09 08:20:35

+0

嘿Maciek,你不应该同时使用上面的处理代码,正如我在评论中提到的那样,你必须使用这些代码 – 2010-02-10 05:16:07

相关问题