0

カスタムコントロールを作成しています。やりたいのは、このイベントをOnMenuShowと呼ぶイベントを作成することです。今、私ができるようにしたいのは、コントロール内でこのイベントを処理して1つのメニューを表示することですが、カスタムコントロールを実装するユーザーが、必要に応じて親フォーム内でイベントを処理して別のメニューを表示できるようにします。したがって、ユーザーコードは次のようになります。

    Public Sub Control_OnMenuShow(sender as Object, e as CustomEventArgs) handles Control.OnMenyShow
      'DO some work
       e.handled = true
    end Sub

コントロール内のコードに対してイベントが1回、イベント内でもう1回発生するのを防ぐ方法がわかりません。誰かが私を正しい方向に向けることができればそれは非常に役に立ちます

-ネイサン

4

2 に答える 2

0

あなたのコントロールで:

Public Event MenuShow As EventHandler



Public Overridable Sub OnMenuShow()
  RaiseEvent MenuShow(New EventArgs)
End Sub

これで、消費者は OnMenuShow をオーバーライドできます。これにより、何も「チェック」する必要なく、raiseevent ステートメントがバイパスされます。

于 2012-08-03T20:17:19.137 に答える
0

Hans の回答が私の質問に最も合っていることがわかりました。もし彼が回答に残していたら、私は彼を回答済みとしてマークしたでしょう。将来の参考のために、これをどのようにコーディングしたかを残しておきます。

Public Event MenuShow As EventHandler(Of  MenuShowEventArgs)

Public Overridable Sub OnMenuShowEvent()
    Dim args As New MenuShowEventArgs(False, "Control")
    RaiseEvent MenuShow(Me, args)
    if args.handled then return
    'DO WORK
End Sub
于 2012-08-06T15:27:03.380 に答える