C♯ 2段構造のcontextMenuStripの消去原因の判別法
コンテクストメニューのイメージ
・A
・B b1
・ b2
・ b3
・C
・D
上記のように項目Bのみが更にサブ項目b1~3を持っているcontextMenuStripを作りました
A、C、Dを選択するとe.CloseReasonはItemClickedになります
またcontextMenuStrip以外の箇所を選択するとAppFocusChangeになります
問題はサブ項目b1を選択すると、期待しているItemClickedにならずAppFocusChangeで戻ってしまうことです
サブ項目もcontextMenuStripの中ですから当然ItemClickedと思っていたのですが・・・・・・
【注】b1を選択するとb1のイベントハンドラーは正常に起動しb1対応の処理をしてくれます
e.CloseReasonの戻り値によりNortifyIconとcontextMenuStripの再接続を行っているので、b1選択でAppFocusChangeであると判断に困ります
propatiyに何らかの設定があるかと考えて調べてはみましたが判然としません
ぜひご指導お願い申し上げます
No.1ベストアンサー
- 回答日時:
フォームクラスに ToolStripItem型の変数を用意しておいてサブメニューのDropDownItemClickedイベントでこの変数に代入するようにします
contextMenuStripのClosingイベントで e.CloseReason のチェックとともにこの変数がnullかどうかで判断してはいかがでしょう
// nullで初期化しておく
private ToolStripItem subMenu = null;
private void contextMenuStrip1_Closing(object sender, ToolStripDropDownClosingEventArgs e)
{
if (e.CloseReason == ToolStripDropDownCloseReason.ItemClicked || subMenu != null)
{
notifyIcon1.ContextMenuStrip = null;
subMenu = null;
}
}
// サブメニューの有るメニュー項目の DropDownItemClickedイベント
private void menuBToolStripMenuItem_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
subMenu = e.ClickedItem;
}
重ね重ねのご指導ありがとうございます
お教え頂いた方法で問題を解決することが出来ました
今後とも宜しくお願い申し上げます
ありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 余計なお世話的な「入力規則」?対策は? 2 2023/01/14 12:39
- Excel(エクセル) エクセルVBA 複数行にまたがっている選択を判定するには 2 2023/05/21 21:54
- JavaScript 電車の運賃を出すプログラムを作っています。 2 2022/06/22 09:36
- JavaScript 中百舌鳥駅と深井駅を入れ替えて選択しても同じ挙動にしたいです。 2 2022/06/24 18:45
- Excel(エクセル) エクセルについて教えてください。 2 2023/06/14 11:11
- その他(Microsoft Office) エクセルの休日について教えてください。 1 2023/01/06 15:45
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- Excel(エクセル) エクセルの掛け算 3 2022/12/13 14:49
- 英語 英語の問題の答えの理由を教えてください 1 2023/06/24 20:54
- Windows 10 再起動後 Pinが使用できず、PC(windows11)にサインインできない 3 2022/08/30 20:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バグの原因がわかりません(c言...
-
C言語 dequeue
-
リスト構造
-
C言語 二分木探索
-
【C言語教えてください】sin波...
-
2÷3などの余りについて
-
C言語についてです。 アスタリ...
-
へんな現象
-
EXCELの分散分析表のP-値が....
-
*をユーザーが入力した数字の数...
-
「Aに対するBの割合」と「Aに対...
-
信頼区間の1.96や1.65ってどこ...
-
ガンマ変換 C言語でプログラ...
-
Aの値からBの値を除するとは??
-
C言語で内積、、、わかりません。
-
std::set<int> で、ある値が何...
-
三角比の俯角の計算
-
C言語の質問です
-
三角比の問題です。
-
Enterキーを押されたら次の処理...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
InvokeMemberメソッドとは何を...
-
構造体のリスト削除
-
C# ref引数のnull判定
-
双方向リストのバブルソートに...
-
コールバック関数はnullになら...
-
今度はdoubly linked listの問...
-
C♯ 2段構造のcontextMenuStrip?
-
「Nz」は何て読むのでしょうか?
-
C#でのEXCEL出力に関して
-
空のカラムを挿入
-
ポインタを使った連結リストへ...
-
バブルソートを使って文字列を...
-
ソートを自作
-
API 録音 MCI
-
ばばぬきプログラムについて
-
C言語 dequeue
-
マイナスからプラスへ転じた時...
-
Enterキーを押されたら次の処理...
-
2÷3などの余りについて
-
C言語での引数の省略方法
おすすめ情報