0

テキストボックスが1つだけ含まれ、VB6の動作とは大幅に異なるユーザーコントロールがある状況があります。
必要なのは、特定の状況でキーをキャンセルすることです。ユーザーコントロールのダウンは、(外部プログラムで)このイベントを発生させないと述べました。
そこで、usercontrol e.handled=trueおよびe.suppressKeyPress=trueのテキストボックスの_KeyDownイベントハンドラーに入れようとしましたが、結果がありませんでした。
Usercontrolは、キーストロークで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イベントを抑制する方法は?

4

1 に答える 1

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
于 2012-12-17T22:50:40.597 に答える