首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >粘贴拦截事件失败

粘贴拦截事件失败
EN

Stack Overflow用户
提问于 2016-08-04 22:36:54
回答 1查看 63关注 0票数 1

我想要拦截一个名字文本框的粘贴事件,这样如果用户粘贴"Joe Smith,PhD",他们将在名字文本框中看到"Joe“,并且他们将在姓氏文本框中看到"Smith,PhD”。相反,我得到的是名字文本框中的"Joe Smith,PhDJoe“和姓氏文本框中的"Smith,PhD”。我添加了一个messagebox作为我的断点,如果我取消对该行的注释,msgbox会显示出来,然后sub就可以正常工作了。那么,这是一个时间问题(Windows 10/VS2015,如果这很重要)?

有很多关于如何拦截粘贴事件的帖子,我下面的代码就是基于这一点的。我做错了什么?

代码语言:javascript
复制
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 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-04 23:54:24

可以做的一件事是将firstword声明为Form级别变量

代码语言:javascript
复制
Private firstWord As String

然后在TBfname_KeyDown中对其赋值

代码语言:javascript
复制
firstWord = words(0)

然后在KeyUp事件中重新分配TBfname.Text

代码语言:javascript
复制
Private Sub TBfname_KeyUp(sender As Object, e As KeyEventArgs) Handles TBfname.KeyUp
    TBfname.Text = firstWord
End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38770398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档