- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C♯ 2段構造のcontextMenuStrip?)
C# 2段構造のcontextMenuStripの消去原因の判別法
このQ&Aのポイント
- C#の2段構造のcontextMenuStripを使用している際、サブ項目を選択すると期待したイベントが発生せず、代わりに別のイベントが発生してしまう問題があります。
- e.CloseReasonの戻り値を元に、NotifyIconとcontextMenuStripの再接続を行っているため、サブ項目を選択した際に判別が困難になります。
- プロパティに特定の設定があるかどうか調べましたが、明確な結論は得られませんでした。
- みんなの回答 (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; }
お礼
重ね重ねのご指導ありがとうございます お教え頂いた方法で問題を解決することが出来ました 今後とも宜しくお願い申し上げます ありがとうございました