Aggiungi al tuo progetto una nuova classe (chiamandola, ad esempio, TextBoxNoPaste); quindi inseriscici come codice:
codice:
Public Class TextBoxNoPaste
Inherits TextBox
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
Const WM_CONTEXTMENU As Integer = &H7B
Const WM_PASTE As Integer = &H302
If Not (m.Msg = WM_CONTEXTMENU Or m.Msg = WM_PASTE) Then
MyBase.WndProc(m)
End If
End Sub
End Class
.
Aggiungi al tuo form le varie caselle di testo, quindi, nel codice del form, vai nella region "Codice generato da Progettazione Windows Forms" (qui mi riferisco a VB.NET 2003, mi pare in VB2005 sia leggermente differente); cerca del codice tipo questo:
codice:
Friend WithEvents <nometextbox> As System.Windows.Forms.TextBox
e modificalo in
codice:
Friend WithEvents <nometextbox> As TextBoxNoPaste
(ripeti tale manovra per tutte le textbox in cui vuoi evitare che l'utente incolli del testo); poco sotto ci dovrebbe essere la sub InitalizeComponents; modifica
codice:
Me.<nometextbox> = New System.Windows.Forms.TextBox
in
codice:
Me.<nometextbox> = New TextBox_NoMenu
; anche qui, ripeti tale manovra per tutte le textbox in cui vuoi evitare che l'utente incolli del testo.
A questo punto per l'utente non dovrebbe essere più possibile far apparire il menu contestuale e incollare (neanche con CTRL+V) nelle TextBox per cui hai effettuato le modifiche.