1
我想攔截FIRST NAME文本框的粘貼事件,以便如果用戶粘貼「Joe Smith,PhD」,他們將在FIRST NAME文本框中獲得「Joe」,並且他們將看到「Smith ,博士「在最後的名稱文本框中。相反,我得到的是「第一名」文本框中的「Joe Smith,PhDJoe」和最後一個名稱文本框中的「Smith,PhD」。我爲我添加了一個消息框作爲斷點,如果我取消註釋該行,msgbox顯示,然後該子工作完美。那麼,這是一個計時問題(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
這個工程,所以我都設置了,但我感到困惑爲什麼我的代碼附加而不是替換文字。 –
@Matt - 不知道數據爲什麼附加。出於某種原因,「TextChanged」事件似乎正在做這件事。如果您在原始版本中將'Application.DoEvents()'放在'TBfname.Text = firstWord'之前,它就可以工作。 –