特定のフラグが設定されていないときにcontextmenustripを非表示にする必要があります。コンテキストメニューストリップの表示/非表示を明示的に制御することはできないと思うので、コンテキストメッシュリストが関連付けられているコントロールをマウスの右ボタンでクリックすることに決めました。それは、私はフラグが設定されている場合は、ボタンが右のボタンであるかどうかをチェックするMouseClickイベントを処理しようと、それはUserControlです。しかし、私の驚きには、マウス右クリックでイベントが発動するのではなく、左クリックだけでイベントが発生します。明示的にContextMenuStripがC#でロードされないようにする
私に間違いがありますか、または回避策がありますか?
右クリックを検出しつつある私がコントロール上で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のオープニングイベントでどのように変更できますか?
コードを投稿することは可能ですか? – NinethSense
あなたの質問に新しく挿入された「読み込み中」とはどういう意味ですか?インスタンスを作成することを意味しますか?それとも以前のように、ポップアップを意味するのですか? – OregonGhost
Clickイベントの説明については、このページのhttp://msdn.microsoft.com/en-us/library/system.windows.forms.control.click.aspxを参照してください。クリックイベント – ChrisF