- PR -

[Windows VB.NET] コンテキストメニューの非表示で

投稿者投稿内容
大ベテラン
会議室デビュー日: 2003/09/16
投稿数: 193
お住まい・勤務地: 千葉県
投稿日時: 2007-07-18 13:38
いつもお世話になっております

コンテキストメニューを非表示にするために

Public Sub New()
MyBase.New()
' この呼び出しは Windows フォーム デザイナで必要です。
InitializeComponent()
' InitializeComponent() 呼び出しの後に初期化を追加します。

Me.ContextMenu = New ContextMenu
End Sub

としたのですが
「マウス右ボタンダウン⇒コントロールの外へドラッグ⇒マウス右ボタンアップ」をすると
コンテキストメニューが表示されてしまいます。

次に WndProcにて 右クリックを無効化にしてみました
大抵のコントロールで 右クリックが無効化されるのですが
NumericUpDown では 右クリックが無効化されず
Me.ContextMenu = New ContextMenu だけでは
「マウス右ボタンダウン⇒コントロールの外へドラッグ⇒マウス右ボタンアップ」とするとコンテキストメニューが表示されてしまいます

なにか 対処方法で 知恵を貸してください
よろしくお願いいたします



じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-07-18 13:49
WinForm で、TextBox の ContextMenu を完全に無効化するには? - GDNJ アーカイブ
http://www.microsoft.com/japan/msdn/community/gdn/ShowPost-23363.htm

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2007-07-18 14:49
引用:

Me.ContextMenu = New ContextMenu


別の話になりますが、
上記だけのステップについて言えば、Me.ContextMenu = Nothing としたほうがよいですね。
インスタンスを作る必要がありませんので。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-07-18 15:03
引用:

まどかさんの書き込み (2007-07-18 14:49) より:

別の話になりますが、
上記だけのステップについて言えば、Me.ContextMenu = Nothing としたほうがよいですね。
インスタンスを作る必要がありませんので。


いいえ。 Nothing (null) は既定のコンテキスト メニューになります。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
大ベテラン
会議室デビュー日: 2003/09/16
投稿数: 193
お住まい・勤務地: 千葉県
投稿日時: 2007-07-18 15:22
ありがとうございます

引用:

じゃんぬねっとさんの書き込み (2007-07-18 13:49) より:
WinForm で、TextBox の ContextMenu を完全に無効化するには? - GDNJ アーカイブ
http://www.microsoft.com/japan/msdn/community/gdn/ShowPost-23363.htm



GDNJ アーカイブを拝見しました
ContextMenu を殺してみましたが やはりだめでした

確かに TextBox では 右クリックを殺せば実現できます
NumericUpDown では 右クリックを押しても WndProc 内でも
右クリックと認識されていないようなのです 


まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2007-07-18 16:55
引用:

いいえ。 Nothing (null) は既定のコンテキスト メニューになります。


あちゃ、やっちゃった。
やったことないこと書いたもんだから。。。
失礼しました。
#hogehogeSorterなんかと一緒の感覚で書いちゃった。
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2007-07-18 19:24
引用:

ContextMenu を殺してみましたが やはりだめでした

確かに TextBox では 右クリックを殺せば実現できます
NumericUpDown では 右クリックを押しても WndProc 内でも
右クリックと認識されていないようなのです 



私も昔いろいろやったことがあります。
NumericUpDownは内部でTextBoxコントロールを持っていて、
それに外部からアクセスできないので、
なかなか難しいです。

私はメッセージフックを使ってマウスの右ボタンを無効にするのが
一番楽でした。
他の方法は

自分でUpDownBaseから作り直す
Reflectionでごにょごにょ

くらいですかねぇ。
自分で作るのがいいかと。
安全でない方法なら他にもあると思いますが…

誰かうまい方法をしりませんかねぇ。
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2007-07-18 19:40
引用:

れいさんの書き込み (2007-07-18 19:24) より:

NumericUpDownは内部でTextBoxコントロールを持っていて、
それに外部からアクセスできないので、
なかなか難しいです。


あれ?
NumericUpDown.Controls の中にありませんでしたっけ。
確かに名前を指定して取得というのはできないですが、Controls の中に
上ボタン、下ボタン、テキストボックスという風に入っていたような気がしま
す。
# 以前それに対して Enabled = false にしたことがある
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。

スキルアップ/キャリアアップ(JOB@IT)