2013-01-21 43 views
0

我在VSkeydown事件到下一行

創建這種形式

enter image description here

NumPlace TextBox自動intalized到1,我想,當我按在Enter鍵到下一行的自動遞增NumPlace

這是我寫的代碼:

Private Sub DataGridView1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles DataGridView1.KeyDown 
     If e.KeyCode = Keys.Enter Then 
      MsgBox("Enter key is pressed !") 
     End If 
    End Sub 

,但它不工作時,我的「輸入」,但是當我改變組合框的值,或選擇某行結束按它只能當我選擇NumPlace TextBox,然後按下Enter時,該事件不起作用。

+0

你嘗試過什麼我建議? – AbZy

回答

0

的解決方案是使用事件的KeyUp代替KeyDown

1

你需要檢查ColIndex和rowIndex位置......................

Dim currCell As DataGridViewCell = DataGridView1.CurrentCell  
+0

這可以幫助我嗎? –

+0

通過檢查行和列可以避免組合框和其他組件的事件「DataGridView1_KeyDown」。 – andy

0

DataGridView1_KeyDown事件只會火當焦點在DataGridView1。請嘗試處理Form1_KeyDown事件。

Private Sub Form1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown 
     If e.KeyCode = Keys.Enter Then 
      MsgBox("Enter key is pressed !") 
     End If 
    End Sub 

然而,你應該在Form Designer Form1的KeyPreview屬性設置爲TrueForm Load,使事件被傳遞給具有焦點的控制之前的形式發出的按鍵事件。

看到this更多信息

+0

我不敢說沒有工作 –

+0

@FADWAFDIWA我測試了這段代碼,它對我很有用。 – AbZy

+0

這個事件僅當我在文本框中寫入內容時選擇表單或DGV時觸發,然後按下鍵輸入事件不會觸發 –