C#で読み込んでから明示的に防ぐいるContextMenuStrip
-
09-09-2019 - |
質問
私は特定のフラグが設定されていないいるContextMenuStripを非表示にする必要があります。私たちは、明示的にコンテキストメニューストリップの表示/非表示を制御することができるとは思わないように、私はトラップしているContextMenuStripが関連付けられているコントロール上でマウスの右ボタンのクリックを決めました。これは、ユーザーコントロールですので、私はそれは私がフラグが設定されているかどうかをチェックし、ボタンを右ボタンであればその内側MouseClickとイベントだ取り扱うみました。しかし、私の驚きに、イベントはマウスの右クリック時に解雇されませんが、火災だけ左クリック用ます。
私と一緒に間違っている任意のものありますかいずれかの回避策はありますか?
を右クリックを検出しつつある、質問のタイトルと説明変更の
私がコントロール上でMOUSE_DOWNイベントを処理したときにいくつかのより多くの研究を行った後、私は、火災に右クリックを得ました。しかしアムまだ無知、どのようにが明示的にのロードからいるContextMenuStripを防止するように。もう一つの問題であること、なぜMouseClickとは、クリックして右ボタンを検出しませんでした?
<時間>現在の回避策
イベントハンドラを登録する
userControl1.Control1.MouseDown += new MouseEventHandler(Control1_MouseDown);
void Control1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right && flag == false)
{
userControl1.Control1.ContextMenuStrip = null;
}
else
{
userControl1.Control1.ContextMenuStrip = contextMenuStrip1;
}
}
これは私がやっている現在の回避策です。 しかし、私がいるContextMenuStripのオープニングイベントでそれを変更することができますか。
解決
あなたのソリューションは、とにかく失敗します。あなたは、コンテキストメニューのオープンをキャンセルするOpening
イベントを使用することができます。
他のヒント
の周りの仕事があります。
メニュー項目Aが制御Bにコンテキストメニューを制御するフラグを設定すると言うことができます。
Aのためのクリックイベントでは、b.ContextMenu =何がそれをオフにし、背面にそれを切り替えるために戻って、コンテキストメニューコントロールにb.ContextMenuを設定するために設定します。
のWinFormsでClick
イベントもあります - 。マウスの右クリックのために解雇ん。
あなたはMouseRightButtonDown
とMouseRightButtonUp
イベントを持っている必要があります。
この MSDNクリックイベントを上げる制御する一覧表示ページ。重要なことは、ボタン、チェックボックス、リッチテキストボックスやラジオボタン(およびいくつかの他)は、右クリックで上げ、イベントはありません。