Ich möchte ein Einfügen-Ereignis für ein FIRST NAME-Textfeld abfangen, so dass, wenn der Benutzer "Joe Smith, PhD" einfügen, sie "Joe" in der FIRST NAME-Textfeld erhalten, und sie sehen "Smith , PhD "in der Textbox LETZTER NAME. Stattdessen bekomme ich "Joe Smith, PhDJoe" in der Textbox FIRST NAME und "Smith, PhD" in der Textbox LAST NAME. Ich habe eine Nachrichtenbox als Haltepunkt für mich hinzugefügt und wenn ich diese Zeile auskommentiere, wird die msgbox angezeigt und dann funktioniert das Unterprogramm perfekt. Also, ist das ein Timing-Problem (Windows 10/VS2015, wenn das wichtig ist)?Paste Intercept event failure
Es gibt viele Beiträge zum Abfangen von Paste-Events, und mein Code unten basiert darauf. Was mache ich falsch?
Public Class test
Private Sub TBfname_PASTE(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TBFname.KeyDown
Dim Pasting As String = Clipboard.GetText()
If e.Modifiers = Keys.Control AndAlso e.KeyCode = Keys.V Then
Dim SplitWhere As Int64 = 0
Dim words = Pasting.Split(" "c)
Dim firstWord = words(0)
If Pasting.Contains(" ") Then
SplitWhere = Pasting.IndexOf(" ")
Dim LN As String = ""
Dim long2 As Int64 = Pasting.Length - SplitWhere - 1
If long2 > 0 Then
LN = Pasting.Substring(SplitWhere + 1, long2)
TBLname.Text = LN
End If
' MsgBox(Pasting & " vs " & TBFname.Text)
TBFname.Text = firstWord
End If
e.Handled = True
End If
End Sub
End Class
Das funktioniert, also bin ich fertig, aber ich bin verwirrt, warum mein Code angehängt, anstatt Text zu ersetzen. –
@Matt - Nicht sicher, warum die Daten anhängen. Aus irgendeinem Grund scheint das 'TextChanged'-Ereignis dies zu tun. Wenn Sie 'Application.DoEvents()' vor 'TBfname.Text = firstWord' in Ihrer ursprünglichen Version platzieren, funktioniert es. –