- PR -

_Popupイベント発生時にどのメニューが選択されたか判断する方法

1
投稿者投稿内容
Marie
会議室デビュー日: 2007/03/18
投稿数: 11
投稿日時: 2008-03-28 10:59
いつもお世話になっております。

大変初歩的な質問かもしれません。よろしくお願いいたします。
・VB.NET(2003)※古いバージョンですみません
・フォームにコンテキストメニュー(System.Windows.Forms.ContextMenu)貼り付け
・フォームロード時にメニューを1つ追加
という環境です。

コンテキストメニュークリック時(ContextMenu_Popupイベント)に「どの」メニューが
クリックされたか判断することは可能ですか?

画面からメニューを追加後にダブルクリックすると
「MenuItem1_Click(Byval sender ・・・(略)」イベントがソース上に追加されますが
上記イベントで記述ができれば、ソースのみで処理を管理できると思ったためです。

よろしくお願いいたします。

お詫び
これまでご回答いただいた質問にきちんとお礼をつけず終わってしまっています。
大変申し訳ありませんでした。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2008-03-28 11:44
senderにはイベント発生元という意味があるんだけどここには入らないんだっけか?
Marie
会議室デビュー日: 2007/03/18
投稿数: 11
投稿日時: 2008-03-28 12:04
ご連絡ありがとうございます。
sender にはSystem.Windows.Forms.ContextMenu の情報が入っています。

それらしいかと思った場所もありますが
(ContextMenu.MenuItems や その下の .Item)
「.Selected」などのプロパティは付いていませんでした。

またはこれらの情報を別の型に変換するなどで「選択されているか」の情報が
取得できるのでしょうか?

よろしくお願いいたします。

rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-03-28 12:23
引用:

Marieさんの書き込み (2008-03-28 10:59) より:

コンテキストメニュークリック時(ContextMenu_Popupイベント)に「どの」メニューが
クリックされたか判断することは可能ですか?

画面からメニューを追加後にダブルクリックすると
「MenuItem1_Click(Byval sender ・・・(略)」イベントがソース上に追加されますが
上記イベントで記述ができれば、ソースのみで処理を管理できると思ったためです。



ContextMenu_Popupイベントの時点ではメニューの項目は選択されていないので、判断することもできません。

各MenuItemに対するClickイベントを同じMenuItem_Clickメソッドで処理するようにしてあげることで、お望みに近いことができるのではないかと思います。
Marie
会議室デビュー日: 2007/03/18
投稿数: 11
投稿日時: 2008-03-28 13:36
rain さん

_popupイベントではメニューが「選択されていない」のですね。
ありがとうございます。

引用:

rainさんの書き込み (2008-03-28 12:23) より:
各MenuItemに対するClickイベントを同じMenuItem_Clickメソッドで処理するようにしてあげることで、お望みに近いことができるのではないかと思います。



すみません。
追加したメニューアイテムが、メニュー以下にコレクションで格納されて、任意の
メニューイベント内で、引数による選択項目の判断ができると思っていました。
追加メニューそれぞれのイベントを書かないといけないのですね。

ありがとうございました。
これからもよろしくお願いいたします。



[ メッセージ編集済み 編集者: Marie 編集日時 2008-03-28 13:43 ]
1

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