2010-03-20 121 views
4

我一直在C#中創建這個登錄表單,並且我想在用戶點擊提交或按下輸入/返回鍵時「提交」所有數據。C#KeyEvent不記錄輸入/返回鍵

我一直在用KeyEvents測試一下,但到目前爲止還沒有工作。

void tbPassword_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    MessageBox.Show(e.KeyChar.ToString()); 
} 

上面的代碼是測試事件是否在第一個地方工作。 它完美的工作,當我按'd'它顯示我'D'時,我按'8'它顯示我'8',但按下輸入不會做任何事情。

所以我雖然這是因爲輸入不是真的綁定到一個字符,但它確實顯示退格,它工作得很好,所以它讓我感到困惑,爲什麼它沒有註冊我的輸入密鑰。

所以問題是: 如何記錄輸入/返回鍵?爲什麼現在不按鍵記錄按鍵?

注:我已經把事件在TextBox

tbPassword.KeyPress += new KeyPressEventHandler(tbPassword_KeyPress); 

所以在選擇的文本框按鈕被按下時,進入(這是當然的全部時間),它觸發也許有與代碼的執行有關。

+1

回車鍵嘗試使用的keydown /向上,而不是我測試了我的電腦上 – 2010-03-20 16:43:17

+0

,它工作得很好。 – 2010-03-20 16:54:37

回答

5

您是否將按鈕定義爲默認操作?

如果是這樣,那麼該控件會吞噬回車鍵。

也許這就是你的答案。您需要在提交按鈕上將DefaultAction屬性設置爲true。

+0

聽起來就像我需要的。但是,我如何將DefaultAction分配給按鈕? – Pieter888 2010-03-20 17:27:51

+0

謝謝,我已經明白了。 我使按鈕成爲我的默認操作,但它不起作用。 但後來我發現它會觸發按鈕的「單擊」事件,我正在使用「MouseClick」事件。 我想這是Click和MouseClick之間的唯一區別... – Pieter888 2010-03-20 17:59:22

0

改爲嘗試KeyDown事件。

private void textBox1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Enter) 
    { 
     MessageBox.Show("Enter"); 
    } 
} 
+0

仍然不適用於我... – Pieter888 2010-03-20 17:29:40

+0

您是否訂閱了該活動? textBox1.KeyDown + = new KeyEventHandler(textBox1_KeyDown); – 2010-03-20 17:42:30

+0

是的,我確實這樣做了,它再次適用於所有按鍵,但是輸入按鈕。 這可能是我的電腦,而不是代碼的錯誤? – Pieter888 2010-03-20 17:46:39

0

也許你應該使用表單的「AcceptButton」將它設置爲提交按鈕。認爲這是你真正...

0

你忽略了一個重要的一點,你必須將Handled屬性設置爲true或false取決於條件......

 
void tbPassword_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    MessageBox.Show(e.KeyChar.ToString()); 
    if (e.KeyCode == Keys.Enter){ 
     // This is handled and will be removed from Windows message pump 
     e.Handled = true; 
    } 
} 
+0

事實上,我傾向於忘記添加到我的事件處理程序不時,謝謝但它不能解決我的問題... – Pieter888 2010-03-20 17:33:05

0

試試這個

textBox1.KeyPress += new KeyPressEventHandler(textBox1_KeyPress); 

void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if (e.KeyChar == '\r') 
    { 
     MessageBox.Show("Enter Key Pressed", "Enter Key Pressed", MessageBoxButtons.OK); 
    } 
} 
+0

也可以添加 submitButton.PerformClick(); 如果你想在你的submitButton上觸發一個按鈕點擊事件 – galford13x 2010-03-20 17:50:35

+0

對不起,不起作用... 有沒有辦法檢查回車鍵是否被某種方式'阻塞'或以某種方式中斷? – Pieter888 2010-03-20 17:50:44

0

轉到您的形式...

的基本形式改變這一

FormName.AcceptButton = buttonName;

這會自動讀取輸入的擊鍵記錄文件... ..

,如果你不希望用戶看到接受按鈕

buttonName.Visible =假,你可以做到這一點; FormName。AcceptButton = buttonName;

的AcceptButton自動讀取從鍵盤