- PR -

コンテキストメニュー階層の動的作成

1
投稿者投稿内容
モンジ
ベテラン
会議室デビュー日: 2005/09/06
投稿数: 85
投稿日時: 2008-09-25 07:55
こんにちは。
VB2005で、Winアプリを開発しています。

下記コードで、コンテキストメニューの階層を
作成していますが、子階層の(下記例では、Menu1)を
動的に作成したいのですが、上手くいかず悩んでおります。

まず、子階層のコンテキストが表示される際のイベントを
どのように取ればよいかで悩んでいます。
ご存知の方いらっしゃれば、教えてください。

    Dim Menu1 As New ToolStripMenuItem
Menu1.Text = "1番目"
Me.ContextMenuStrip1.Items.Add(Menu1)

Dim Menu1_1 As New ToolStripMenuItem
Menu1_1.Text = "1-1番目"
Menu1.DropDownItems.Add(Menu1_1)

Me.ContextMenuStrip = Me.ContextMenuStrip1
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-09-25 09:41
コード:
    Me.ContextMenuStrip = Me.ContextMenuStrip1


これはデザイナ上から設定しておいたほうがよいでしょう。
デザイナ上から ContextMenuStrip1 を置くと、各コントロールに ContextMenuStrip プロパティが追加されています。
Form の ContextMenuStrip プロパティで ContextMenuStrip1 を選べばOKです。

そうすればコンテキストメニューが開かれる直前に、ContextMenuStrip1 の Opening イベントが発生しますので、そのタイミングでメニュー階層を作り、ContextMenuStrip1 へ追加すればよいと思います。
からあげ
会議室デビュー日: 2007/12/13
投稿数: 19
投稿日時: 2008-09-25 10:49
AddHandler Menu1.DropDownOpening, AddressOf イベントハンドラー

でいかがでしょう。
モンジ
ベテラン
会議室デビュー日: 2005/09/06
投稿数: 85
投稿日時: 2008-09-26 12:51
rainさん、からあげさん
レスありがとうございます。

AddHandlerを使って実装することが出来ました。

ただ、コンテキストメニューのOpeningイベントで子階層を作るロジックが発生
してしまうため、子階層を作らないコンテキストメニューを実行したい場合も
子階層を作るロジックが発生してしまいます。

子階層を開くときにイベントを捕捉するのが理想なのですが、
そのようなことは可能でしょうか。
1

スキルアップ/キャリアアップ(JOB@IT)