我想要拦截一个名字文本框的粘贴事件,这样如果用户粘贴"Joe Smith,PhD",他们将在名字文本框中看到"Joe“,并且他们将在姓氏文本框中看到"Smith,PhD”。相反,我得到的是名字文本框中的"Joe Smith,PhDJoe“和姓氏文本框中的"Smith,PhD”。我添加了一个messagebox作为我的断点,如果我取消对该行的注释,msgbox会显示出来,然后sub就可以正常工作了。那么,这是一个时间问题(Windows 10/VS2015,如果这很重要)?
有很多关于如何拦截粘贴事件的帖子,我下面的代码就是基于这一点的。我做错了什么?
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 发布于 2016-08-04 23:54:24
可以做的一件事是将firstword声明为Form级别变量
Private firstWord As String然后在TBfname_KeyDown中对其赋值
firstWord = words(0)然后在KeyUp事件中重新分配TBfname.Text
Private Sub TBfname_KeyUp(sender As Object, e As KeyEventArgs) Handles TBfname.KeyUp
TBfname.Text = firstWord
End Subhttps://stackoverflow.com/questions/38770398
复制相似问题