2012-10-04 52 views
3

我想在2008年VB.NET使用KeyPress事件,但它不工作。任何人都可以幫我弄清楚這段代碼有什麼問題嗎?此消息框不會顯示,我的數據庫中的狀態也不會顯示。該程序說,這是好的,但它不工作。無法檢測按鍵響應事件Enter鍵

If e.KeyChar = Chr(Keys.Enter) Then 
    tblLogin = Proses.ExecuteQuery("Select * From TblUser where kode_user = '" & KdUserTxt.Text & "'") 
    If tblLogin.Rows.Count = 0 Then 
     MessageBox.Show("Kode User Not Found!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information) 
     KdUserTxt.Focus() 
    Else 
     StatusTxt.Text = tblLogin.Rows(0).Item("status") 
     PswTxt.Focus() 
    End If 
End If 
+0

你是怎樣的KeyPress事件添加到您的文本框? –

+1

Holy Sql注入漏洞,蝙蝠俠! –

+2

要跟進之前的評論:_請不要使用像那樣的字符串連接來構建您的查詢。如果我把「DROP TABLE TblUser; - 」放在你的KdUserTxt盒子裏? –

回答

4

您不應該使用KeyPress事件捕獲控制鍵,如回車鍵。相反,您應該使用KeyDown事件。 KeyDown允許您捕獲鍵盤上的任何物理鍵。例如:

Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles TextBox1.KeyDown 
    If e.KeyCode = Keys.Enter Then 
     MessageBox.Show("Enter key pressed") 
    End If 
End Sub 

然而,要完成這樣的事情正常的方式將一個按鈕添加到您的形式,諸如OK或提交按鈕。然後,在表單的屬性中,將AcceptButton屬性設置爲該按鈕。然後,當用戶按下Enter鍵時,WinForm框架將自動爲您調用該按鈕的單擊事件。同樣,CancelButton屬性設置當用戶按下退出鍵時單擊哪個按鈕。

+0

好的thx爲您的幫助 –

2

您將無法捕捉到輸入關鍵的KeyDown情況下,如果你已經確立了自己的WinForm 的AcceptButton財產。

設置屬性的AcceptButton所需的WinForm的沒有爲了使你的代碼工作。