2010-02-08 127 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

相關問題