• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C♯ 2段構造のcontextMenuStrip?)

C# 2段構造のcontextMenuStripの消去原因の判別法

このQ&Aのポイント
  • C#の2段構造のcontextMenuStripを使用している際、サブ項目を選択すると期待したイベントが発生せず、代わりに別のイベントが発生してしまう問題があります。
  • e.CloseReasonの戻り値を元に、NotifyIconとcontextMenuStripの再接続を行っているため、サブ項目を選択した際に判別が困難になります。
  • プロパティに特定の設定があるかどうか調べましたが、明確な結論は得られませんでした。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答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;   }

sato-may
質問者

お礼

重ね重ねのご指導ありがとうございます お教え頂いた方法で問題を解決することが出来ました 今後とも宜しくお願い申し上げます ありがとうございました

関連するQ&A

専門家に質問してみよう