- - PR -
コンテキストメニュー階層の動的作成
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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 | ||||
|
投稿日時: 2008-09-25 09:41
これはデザイナ上から設定しておいたほうがよいでしょう。 デザイナ上から ContextMenuStrip1 を置くと、各コントロールに ContextMenuStrip プロパティが追加されています。 Form の ContextMenuStrip プロパティで ContextMenuStrip1 を選べばOKです。 そうすればコンテキストメニューが開かれる直前に、ContextMenuStrip1 の Opening イベントが発生しますので、そのタイミングでメニュー階層を作り、ContextMenuStrip1 へ追加すればよいと思います。 | ||||
|
投稿日時: 2008-09-25 10:49
AddHandler Menu1.DropDownOpening, AddressOf イベントハンドラー
でいかがでしょう。 | ||||
|
投稿日時: 2008-09-26 12:51
rainさん、からあげさん
レスありがとうございます。 AddHandlerを使って実装することが出来ました。 ただ、コンテキストメニューのOpeningイベントで子階層を作るロジックが発生 してしまうため、子階層を作らないコンテキストメニューを実行したい場合も 子階層を作るロジックが発生してしまいます。 子階層を開くときにイベントを捕捉するのが理想なのですが、 そのようなことは可能でしょうか。 |
1