- - PR -
右クリックの使用不可について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-09-28 13:48
お世話になります。
現在Visual Basic.NET 2003で開発を行っています。 今回の開発では、マウスの右クリックで開かれるコンテキストメニューを全面的に廃止するように設定します。 (※コピー/切り取り/貼り付け等を防ぐためです) 現在、どのように設定しているのかというと、フォームロード時に"コントロール名.ContextMenu = New ContextMenu"というコードを流して表示させないように対処しています。 しかし、その方法だけでは完全に右クリックを禁止できていないことが判明しました。 現象は主にテキストボックスで発生します。 例えばテキストボックスにカーソルを合わせ、右クリックを押します。 右クリックを押したまま、カーソルをテキストボックス以外のところにずらして、クリックを離すとコンテキストメニューが表示されてしまうのです。 フォーム自体に対して上記の処理(Me.ContextMenu = New ContextMenu)を流しても駄目でした。 上記で説明した方法以外に対処法はないでしょうか? アドバイスをお願いします。 | ||||
|
投稿日時: 2005-09-28 13:58
http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=23363
ここに情報がありますね。 | ||||
|
投稿日時: 2005-09-28 14:01
GDNJ に参考になりそうなスレッドがありますよ。
WinFormで、textBoxのContextMenuを完全に無効化するには? あ、検索してたらダブった... orz [ シグネチャを削除 ] [ メッセージ編集済み 編集者: じゃんぬねっと 編集日時 2006-09-19 14:38 ] | ||||
|
投稿日時: 2005-09-29 11:52
編集投稿してる時点で言えば良かったのですが...
だとすると、コンテキスト メニューだけじゃダメですよね。 [Ctrl] + [C] や [Ctrl] + [Insert] って、何で対応しています? 何も考えずに全部防ぐ方法は、 WndProc をオーバーライドして、WM_PASTE や WM_COPY などを防ぐことです。 これをやれば、コンテキスト メニューからのコマンドも防ぐことができますからね。 1 番安全で確実だと思います。 コンテキスト メニューは、 Me.ContextMenu = New ContextMenu() としておいて、特に後は何もしないで良いと思いますね。 仮に無理にコマンド出して貼り付けても、WndProc でインターセプトされて、無効になりますから。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
1