- PR -

右クリックの使用不可について

1
投稿者投稿内容
ちか
会議室デビュー日: 2005/09/28
投稿数: 4
投稿日時: 2005-09-28 13:48
お世話になります。
現在Visual Basic.NET 2003で開発を行っています。

今回の開発では、マウスの右クリックで開かれるコンテキストメニューを全面的に廃止するように設定します。
(※コピー/切り取り/貼り付け等を防ぐためです)

現在、どのように設定しているのかというと、フォームロード時に"コントロール名.ContextMenu = New ContextMenu"というコードを流して表示させないように対処しています。
しかし、その方法だけでは完全に右クリックを禁止できていないことが判明しました。


現象は主にテキストボックスで発生します。
例えばテキストボックスにカーソルを合わせ、右クリックを押します。
右クリックを押したまま、カーソルをテキストボックス以外のところにずらして、クリックを離すとコンテキストメニューが表示されてしまうのです。


フォーム自体に対して上記の処理(Me.ContextMenu = New ContextMenu)を流しても駄目でした。


上記で説明した方法以外に対処法はないでしょうか?
アドバイスをお願いします。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2005-09-28 13:58
http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=23363
ここに情報がありますね。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-09-28 14:01
GDNJ に参考になりそうなスレッドがありますよ。
WinFormで、textBoxのContextMenuを完全に無効化するには?

あ、検索してたらダブった... orz

[ シグネチャを削除 ]

[ メッセージ編集済み 編集者: じゃんぬねっと 編集日時 2006-09-19 14:38 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-09-29 11:52
編集投稿してる時点で言えば良かったのですが...

引用:

未記入さんの書き込み (2005-09-28 13:48) より:

(※コピー/切り取り/貼り付け等を防ぐためです)


だとすると、コンテキスト メニューだけじゃダメですよね。
[Ctrl] + [C] や [Ctrl] + [Insert] って、何で対応しています?

何も考えずに全部防ぐ方法は、
WndProc をオーバーライドして、WM_PASTE や WM_COPY などを防ぐことです。
これをやれば、コンテキスト メニューからのコマンドも防ぐことができますからね。
1 番安全で確実だと思います。

コンテキスト メニューは、
 Me.ContextMenu = New ContextMenu()
としておいて、特に後は何もしないで良いと思いますね。
仮に無理にコマンド出して貼り付けても、WndProc でインターセプトされて、無効になりますから。


_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

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