天天看點

在文本框中不能使用粘貼

分享一下實用代碼,希望能給大家帶來幫助。

設定剪貼闆的字元無法向TextBox粘貼的方法。

設定「Ctrl + V」和文本菜單無效的方法

[VB.NET]

''' <summary>

''' 使滑鼠和鍵盤的粘貼無效的TextBox

''' </summary>

Public Class MyTextBox

    Inherits TextBox

    Private pasteKeys As Keys = Keys.V Or Keys.Control

    Public Sub New()

         '設定文本菜單不表示

        Me.ContextMenu = New ContextMenu

     End Sub

    Protected Overrides Function ProcessCmdKey( _

        ByRef msg As Message, ByVal keyData As Keys) As Boolean

        '設定Ctrl+V無效

        If (keyData Or pasteKeys) = pasteKeys Then

             Return True

        Else

            Return MyBase.ProcessCmdKey(msg, keyData)

        End If

    End Function

End Class

[C#]
 
 //using System.Windows.Forms;
 //上面一行寫在代碼的最上面

 /// <summary>
 ///使滑鼠和鍵盤的粘貼無效的TextBox
 /// </summary>
 public class MyTextBox : TextBox
 {
     const Keys pasteKeys = Keys.V | Keys.Control;

     public MyTextBox() : base()
     {
         //設定文本菜單不表示
         this.ContextMenu = new ContextMenu();
     }

     protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
     {
         //設定Ctrl+V無效
         if ((keyData | pasteKeys) == pasteKeys)
             return true;
         else
             return base.ProcessCmdKey(ref msg, keyData);
     }
 }
      

無視WM_PASTE消息的方法

另外,下面介紹的代碼就是設定WM_PASTE消息無視的方法。

[VB.NET]
 
 ''' <summary>
 '''使滑鼠和鍵盤的粘貼無效的TextBox
 ''' </summary>
 Public Class MyTextBox
     Inherits TextBox
     Private WM_PASTE As Integer = &H302

     Protected Overrides Sub WndProc(ByRef m As Message)
         If m.Msg = WM_PASTE Then
             Return
         End If
         MyBase.WndProc(m)
     End Sub
 End Class
      
[C#]
 
 //using System.Windows.Forms;
 //上面一行寫在代碼的最上面

 /// <summary>
 ///使滑鼠和鍵盤的粘貼無效的TextBox
 /// </summary>
 public class MyTextBox : TextBox
 {
     const int WM_PASTE = 0x302;

     protected override void WndProc(ref Message m)
     {
         if (m.Msg == WM_PASTE)
             return;

         base.WndProc(ref m);
     }
 }
      

.NET Framework 2.0以後版本,使用ShortcutsEnabled屬性的方法

從.NET Framework 2.0版本開始,TextBox的類裡追回了ShortcutsEnabled屬性。當屬性設定為false時,在TextBox中使用的快捷鍵都無法使用。而且,文本菜單也無法表示。是以,字元串粘貼也無法使用。

但是,所有的快捷方式也都無效,複制等操作也無法使用。

繼續閱讀