2012-08-15 59 views
3

對於我正在處理的當前應用程序,我想用我自己的自定義控件來模擬組合框,因爲我希望它是多列並具有一些附加功能。我正在使用文本框和datagridview來執行此操作。如何在文本框中按Tab鍵時觸發事件?

我想複製可以與常規組合框一起使用的提示/追加。我的工作很棒。用戶可以開始鍵入,獲取建議列表,並可以使用向上和向下鍵滾動條目。

我已經將輸入鍵鎖定爲選定的行作爲值。這個工作完美,但我也想陷入選項卡的鍵,並做同樣的事情,就像已經嵌入組合框控件中的功能。

問題是,顯然vb.net使用tab鍵來改變選定的控件,這之前我可以調用我的子程序從我的datagridview中選取的行。我希望能夠取消該控件的Tab鍵,或者至少找到一種方法在代碼執行之前觸發我的代碼。

在此先感謝。

回答

5

該文本框還有一個AcceptsTab屬性,當Multiline = True工作。

有了這些條件,你現在可以看到,如果按下TAB鍵:

Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) _ 
          Handles TextBox1.KeyDown 
    If e.KeyCode = Keys.Tab Then 
    e.SuppressKeyPress = True 
    'do something 
    End If 
End Sub 
+0

完美!謝謝 – GeorgeK 2012-08-15 13:29:50

-2

問題是在這種情況下,在按下TAB鍵將失去焦點輸入元素 你需要在KEYDOWN綁定事件 並帶有這樣的回調函數

var code = e.keyCode || e.which; 
    if (code == '9') { 
    alert('Tab'); 
    return false; 
    } 
+1

這不是一個JavaScript問題.. – stuartd 2012-08-15 12:34:34

+0

我想背後的邏輯是一樣的 – derki 2012-08-15 12:40:05

相關問題