2012-12-17 65 views
0

我有一個用戶控件只包含一個文本框,並且與VB6中的行爲有很大不同。
必要性是在某些情況下取消key.Down的usercontrol提到它不會觸發這個事件(在外部程序中)。
那裏我試圖把用戶控件中的textbox的_KeyDown事件處理程序e.handled = true和e.suppressKeyPress = true,但沒有結果。
用戶控件仍然通過按鍵發出KeyDown事件。如何抑制用戶控件的關鍵事件

Private Sub myText_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles myText.KeyDown 

If e.KeyCode = Keys.Down Then 
    If stop_Down Then 'property 
     e.Handled = True 
     e.SuppressKeyPress = True 
     Exit Sub 
    End If 
End If 

程序正確地通過此代碼關於屬性。
但不要禁止usercontrol的_KeyDown事件。

如何禁止在上方代碼顯示的情況下從usercontrol觸發_KeyDown事件?

回答

1

您可以覆蓋ProcessCmdKey函數。這是接收鍵擊的鏈中的第一個函數。

返回true,鏈條的其餘部分將不會收到筆畫。

例如(用戶控件):

Protected Overrides Function ProcessCmdKey(ByRef msg As Forms.Message, _ 
              keyData As Forms.Keys) As Boolean 

    If MyCriteriasToIgnoreStroke Then 
     Return True 
    End If 

    Return MyBase.ProcessCmdKey(msg, keyData) 

End function 
+0

嗨Abdias,搞不定!感謝幫助。 –