条件によって右クリックイベント、またはコンテキストメニューを抑止するには

解決


おも  2007-11-01 22:58:25  No: 138020

いつもお世話になっております<(_ _)>

VB2005で、デザイン時にPictureBoxにContextMenuStripをつけています。
特定の座標が右クリックされた場合だけContextMenuを
表示させたいと思います。
同じコントロール上で、表示を条件分岐させることは可能でしょうか。
いい方法がありましたらご教授ください<(_ _)>


魔界の仮面弁士  2007-11-01 23:10:35  No: 138021

MouseDown イベントあたりに、
  If area.Contains(e.Location) Then
    PictureBox1.ContextMenuStrip = ContextMenuStrip1
  Else
    PictureBox1.ContextMenuStrip = Nothing
  End If
というコードを書いてみては如何でしょう。
(変数 "area" は、クリック範囲を示す Rectangle です)


Hongliang  2007-11-02 01:24:40  No: 138022

ContextMenuStrip の Opening イベントで条件が気に食わなければキャンセル。


おも  2007-11-02 02:15:01  No: 138023

どうもありがとうございました。
その方法で思い通りのことが出来ました。

コードでContextMenuStripを切り替える方法をしらなかったので、
いろいろとできることが増えました。
ありがとうございました<(_ _)>


おも  2007-11-02 02:40:28  No: 138024

>Hongliang 様
すみません、リロードせず↑の投稿をしてしまったので
アドバイス頂いたのに気づきませんでした。

イベントをキャンセルする方法も覚えておきたいのですが、キャンセルとはどのように書いたらよろしいのでしょうか。「イベントをキャンセル」で検索してみたのですが、見つけられませんでした。

代わりに、インテリセンスのおかげで、
ContextMenuStrip1.Enabled = False
でもOKだということがのおかげでわかったのですが・・・。


おも  2007-11-02 06:43:46  No: 138025

e.Cancel = True
でキャンセルできました。
どうもありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加