Capture CTRL+V coller dans une zone de texte .NET
VB.NET 2010 - j'ai un RichTextbox dans laquelle l'utilisateur peut saisir manuellement des données ou de le copier/coller à partir d'une autre source. Après la collecte de données est terminée, il la frappe go et quelques mots clés sont mis en évidence. Mon problème est que si il copie/colle provenant d'une autre source que le formatage est également copié. Eh bien, parfois à l'extérieur de la source a une police blanche et ma zone de texte a un fond blanc, il apparaît comme il a collé rien et il le fait encore et encore.
Ce que je cherche est un moyen d'intercepter l'action de collage dans la zone de texte de sorte que je peux prendre ce texte et de le coller au format ASCII pur, sans mise en forme.
Modifier après avoir expérimenté avec KeyDown
Private Sub txtRch_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles txtRch.KeyDown
If e.Modifiers = Keys.Control AndAlso e.KeyCode = Keys.V Then
With txtRch
Dim i As Integer = .SelectionStart 'cache the current position
.Select(0, i) 'select text from start to current position
Dim s As String = .SelectedText 'copy that text to a variable
.Select(i, .TextLength) 'now select text from current position to end
Dim t As String = .SelectedText 'copy that text to a variable
Dim u As String = s & Clipboard.GetText(TextDataFormat.UnicodeText) & t 'now concatenate the first chunk, the new text, and the last chunk
.Clear() 'clear the textbox
.Text = u 'paste the new text back into textbox
.SelectionStart = i 'put cursor back to cached position
End With
'the event has been handled manually
e.Handled = True
End If
End Sub
Cela semble fonctionner et tout mon texte est conservé et tous ses ASCII. Je pense que si je voulais faire un pas de plus, j'ai pu également prendre la police et forecolor de mon RichTextbox, sélectionnez tout le texte, puis d'attribuer la police et forecolor à la sélection.
OriginalL'auteur sinDizzy | 2013-04-11
Vous devez vous connecter pour publier un commentaire.
Dans la plupart des cas, l'examen de l'événement KeyDown devrait être assez bon avec l'utilisation d'un temporaire RichTextBox pour modifier le texte entrants:
Note: Manquant tout de vérification d'erreur.
Je ne peux pas reproduire l'événement "pas de tir" en allant vite. Peut-être que vous avez quelque chose qui interfère.
Vous êtes de droite. Ce que j'ai essayé était l'événement KeyUp. Permettez-moi d'essayer avec les KeyDown et je vais poster mes résultats.
OriginalL'auteur LarsTech