none
右クリック→メニュー表示→イベントはどうやって飛ぶのですか? RRS feed

  • 質問

  • まいどお世話になっております。

     

     

    現在ContextMenuStripを使って、右クリックした時に、メニューを表示しております(ソースは下記)。

    そのメニューをクリックした時にイベントに飛びたいのですが、

    探しても分りません。

     

    有識者の方、ご享受頂ければ幸いです。

     

    宜しくお願いします。

     

    --以下ソース--
    Dim itsCMS As New ContextMenuStrip

    itsCMS.Items.Add("MOVE")
    itsCMS.Items.Add("図面")

    dgv_ResultList(フォームのオブジェクト名です).ContextMenuStrip = itsCMS

    2007年8月30日 12:51

回答

  • yuji_amk さん、こんにちは
    ダッチです。

     yuji_amk さんからの引用
    そのメニューをクリックした時にイベントに飛びたいのですが

    コントロールをクリックした時のイベントは Click イベントになります。

    ToolStripMenuItem クラスを動的に作成しているようですので、
    動的にイベントを関連付ける必要があります。

    イベントの動的に関連付けは Addhandlerステートメントを使用します。

     

    Code Snippet
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim move As New ToolStripMenuItem("MOVE")
        AddHandler move.Click, AddressOf moveToolStripMenuItem_Click
        Me.ContextMenuStrip1.Items.Add(move)
     
        Dim 図面 As New ToolStripMenuItem("図面")
        AddHandler 図面.Click, AddressOf 図面ToolStripMenuItem_Click
        Me.ContextMenuStrip1.Items.Add(図面)
    End Sub
     
    Private Sub moveToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Console.WriteLine("moveToolStripMenuItem_Click")
    End Sub
     
    Private Sub 図面ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Console.WriteLine("図面ToolStripMenuItem_Click")
    End Sub

     

     

    特に理由が無ければ、このようなことをしなくても
    デザイナ画面から "MOVE" と "図面" メニューを作成しておき、
    イベントをデザイナ画面から関連付けたほうが楽だと思います。

    2007年8月30日 14:15
  • 作成したメニュー(MOVE や 図面)をダブルクリックしてみてください。

    自動で Click イベントに関連付くメソッドが作成されます。

    これはメニューに限らず、ボタンなどでも同様です。
    コントロールによって作成されるイベントは変わりますが。


    その他の方法としては、作成したメニューを選択して
    プロパティウィンドウから「雷」マークを選択して
    作成したいイベント名をダブルクリックすればいいです。

    2007年8月31日 6:06

すべての返信

  • yuji_amk さん、こんにちは
    ダッチです。

     yuji_amk さんからの引用
    そのメニューをクリックした時にイベントに飛びたいのですが

    コントロールをクリックした時のイベントは Click イベントになります。

    ToolStripMenuItem クラスを動的に作成しているようですので、
    動的にイベントを関連付ける必要があります。

    イベントの動的に関連付けは Addhandlerステートメントを使用します。

     

    Code Snippet
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim move As New ToolStripMenuItem("MOVE")
        AddHandler move.Click, AddressOf moveToolStripMenuItem_Click
        Me.ContextMenuStrip1.Items.Add(move)
     
        Dim 図面 As New ToolStripMenuItem("図面")
        AddHandler 図面.Click, AddressOf 図面ToolStripMenuItem_Click
        Me.ContextMenuStrip1.Items.Add(図面)
    End Sub
     
    Private Sub moveToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Console.WriteLine("moveToolStripMenuItem_Click")
    End Sub
     
    Private Sub 図面ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Console.WriteLine("図面ToolStripMenuItem_Click")
    End Sub

     

     

    特に理由が無ければ、このようなことをしなくても
    デザイナ画面から "MOVE" と "図面" メニューを作成しておき、
    イベントをデザイナ画面から関連付けたほうが楽だと思います。

    2007年8月30日 14:15
  • ご返信ありがとうございます。

     

    動的に作成した場合は、そのToolStripMenuのアンドラを作成し、イベントに飛ばすようにするのですね。

    なるほど。

     

    デザイナ画面で問題なかったのですが、実はどうやるのかが分らなかったのです。

    ContextMenuStripを作成し、項目も作成したのですが、右クリックでどうやるのかが分りません。

    もしご存じであれば、ご享受頂ければ幸いです。

     

    宜しくお願い致します。

     

    2007年8月31日 4:10
  • 作成したメニュー(MOVE や 図面)をダブルクリックしてみてください。

    自動で Click イベントに関連付くメソッドが作成されます。

    これはメニューに限らず、ボタンなどでも同様です。
    コントロールによって作成されるイベントは変わりますが。


    その他の方法としては、作成したメニューを選択して
    プロパティウィンドウから「雷」マークを選択して
    作成したいイベント名をダブルクリックすればいいです。

    2007年8月31日 6:06
  • ご返信ありがとうございます。

     

    イベント等作成するのはOKなのですが、

    特定のコントロール上で「右クリック」し、その作成した、ContextMenuStripのメニューを右クリックした時に、

    表示させる方法が分らないのです。

     

    かつContexMenuStripをデザインで作成しても、実行時画面に表示されないのです。。。

    EnableはTrueにも関わらず。。。

    その辺りもご享受してくださると幸いです。

     

     

    どうぞ宜しくお願い致します。

    2007年8月31日 6:12
  • すいません。馬鹿でした。。。

     

    私が動的に作ったコードを見て、分りました。

     

    Me.ContextMenuStrip = ContextMenuStrip1

    ContextMenuStrip1.Show()

     

     

    全てデザインで自動でできるもんだと勘違いしておりました。

     

     

    どうもありがとうございました。

    2007年8月31日 6:29