C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: テキストボックスでの右クリックによる貼り付けを禁止


(過去ログ 58 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■32953 / inTopicNo.1)  テキストボックスでの右クリックによる貼り付けを禁止
  
□投稿者/ マジョラム (18回)-(2009/02/18(Wed) 09:56:28)

分類:[VB.NET/VB2005 以降] 

テキストボックスで、右クリックするコンテキストメニューが表示され、
その中に貼り付けがありますが、それを禁止したいと思い、いろいろと
調べました。
TextBox1.ContextMenu = New ContextMenu
とすれば、コンテキストメニューが表示されなくはなるのですが、
テキストボックスで右クリックして、そのままテキストボックス範囲外で
離すと、コンテキストメニューが表示されてしまいます。

どうすればいいのでしょうか?
引用返信 編集キー/
■32960 / inTopicNo.2)  Re[1]: テキストボックスでの右クリックによる貼り付けを禁止
□投稿者/ 出水 (116回)-(2009/02/18(Wed) 10:36:57)
貼り付けを完全禁止するのはかなり困難だと思います
CTRL+VやSHIFT+INSによる貼り付けは禁止しなくていいんでしょうか?

一応、テキストボックスにフォーカスがある間は
クリップボードを強制的に空にするみたいな処理を入れると擬似的にはできそうですけど…
引用返信 編集キー/
■32961 / inTopicNo.3)  Re[1]: テキストボックスでの右クリックによる貼り付けを禁止
□投稿者/ カドルドエグ (73回)-(2009/02/18(Wed) 10:39:20)
No32953 (マジョラム さん) に返信
> テキストボックスで、右クリックするコンテキストメニューが表示され、
> その中に貼り付けがありますが、それを禁止したいと思い、いろいろと
> 調べました。
> TextBox1.ContextMenu = New ContextMenu
> とすれば、コンテキストメニューが表示されなくはなるのですが、
> テキストボックスで右クリックして、そのままテキストボックス範囲外で
> 離すと、コンテキストメニューが表示されてしまいます。
>
> どうすればいいのでしょうか?

こちらに情報がありますね。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=24738&forum=7

ただ、リンク先のリンク先は以下に変わっています。
http://www.microsoft.com/japan/msdn/community/gdn/ShowPost-23363.htm
引用返信 編集キー/
■32979 / inTopicNo.4)  Re[1]: テキストボックスでの右クリックによる貼り付けを禁止
□投稿者/ 魔界の仮面弁士 (999回)-(2009/02/18(Wed) 12:52:01)
No32953 (マジョラム さん) に返信
> テキストボックスで、右クリックするコンテキストメニューが表示され、
> その中に貼り付けがありますが、それを禁止したいと思い、いろいろと
> 調べました。

(案1) 右クリック前に、Clipboard を Clear してしまう。
(案2) [貼り付け]されても動作しないよう、WM_PASTE を握りつぶす。


' 案2
Public Class Form1
    Private TextBox1, TextBox2 As TextBox

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
        TextBox1 = New TextBox()
        TextBox1.Text = "通常版"
        TextBox2 = New TextBoxEx()
        TextBox2.Text = "貼付不可"
        Controls.Add(TextBox1)
        TextBox2.Top = TextBox1.Bottom + 3
        Controls.Add(TextBox2)
    End Sub
End Class

Public Class TextBoxEx
    Inherits TextBox
    Protected Overrides Sub WndProc(ByRef m As Message)
        Const WM_PASTE As Integer = &H302
        If m.Msg <> WM_PASTE Then
            MyBase.WndProc(m)
        End If
    End Sub
End Class

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -