簡體   English   中英

keyDown事件不適用於文本框

[英]keyDown event is not working on textbox

我有一個簡單的登錄表單,我已將它的接受按鈕屬性設置為“確定”按鈕,我有一個文本框“用戶名”,我設置它的KeyDown事件進行一些處理。 Ok已啟用設置為false。

btnOk.Enbled = false;  
this.AcceptButton = btnOk;
txtUsername.KeyDown += new KeyEventHandler(KeyDownHandle);

當我在用戶名文本框中按Enter鍵時,我會進行一些處理,然后將啟用的接受按鈕設置為true。

private void KeyDownHandle(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        // some processing
        btnOk.Enabled = true;
        txtPassword.Focus();
    }
}

然后我在密碼文本框中寫密碼並按Enter鍵以便觸發“OK.Click”。

但問題是keyDown無法正常工作,因為“接受按鈕”。
我該怎么做才能解決這個問題?

編輯:只是想說如果我將acceptButton設置為“none”,問題就解決了,但這不是我想要的。

為什么不從this.AcceptButton = btnOk刪除this.AcceptButton = btnOk (我想)並將其放在KeyDownHandler ,這樣btnOk只有在啟用后才能接受Enter鍵,並且在插入用戶名之后。 所以代碼應該是這樣的:

btnOk.Enabled = false;
txtUsername.KeyDown += new KeyEventHandler(textBox1_KeyDown);
btnOk.Click += new EventHandler(button1_Click);


private void KeyDownHandle(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        // some processing
        btnOk.Enabled = true;
        this.AcceptButton = btnOk;
        txtPassword.Focus();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM