![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
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ランキング
-
構造体のリスト削除
-
信頼区間の1.96や1.65ってどこ...
-
Enterキーを押されたら次の処理...
-
「Aに対するBの割合」と「Aに対...
-
C言語 プログラム
-
プログラムの実行時に'<'でリダ...
-
DWORDの実際の型は何でしょうか
-
C++にてtemplateで受け取った任...
-
プログラムでの数字につく”f”の...
-
数学 確率変数Xは、X=2またはX...
-
「指定されたキャストは有効で...
-
構文エラー";"が型の前にあり...
-
2÷3などの余りについて
-
fgetsなどのときのstdinのバッ...
-
変数とパラメータとは違うもの...
-
複数桁10進数の*桁目だけを抽出...
-
マイナスからプラスへ転じた時...
-
迷路を脱出する経路探索プログ...
-
C言語での引数の省略方法
-
EXCELの分散分析表のP-値が....
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
構造体のリスト削除
-
InvokeMemberメソッドとは何を...
-
ばばぬきプログラムについて
-
C言語 リスト
-
C言語 dequeue
-
C# ref引数のnull判定
-
C言語
-
双方向リストのバブルソートに...
-
API 録音 MCI
-
ご教授ください。Segmentation ...
-
C♯ 2段構造のcontextMenuStrip?
-
リスト構造
-
コールバック関数はnullになら...
-
連結リストをソート
-
今度はdoubly linked listの問...
-
C言語 二分木探索
-
「Nz」は何て読むのでしょうか?
-
バブルソートを使って文字列を...
-
【C++】ストリームオブジェクト...
-
別formの多重起動防止
おすすめ情報