当我在visual studio中搜索整个项目中的"剪贴板"这个词时,我找不到匹配项.
但不知怎的,我的程序似乎正在改变我的剪贴板的内容,以等于我的窗体上的控件的.text属性.怎么会这样?
我已经确定了处理程序,之后我的剪贴板似乎总是被更改,并添加了一个消息框以从剪贴板中获取文本以尝试识别何时可以更改它.
MessageBox.Show(Clipboard.GetText)
Run Code Online (Sandbox Code Playgroud)
即使在子处理事件的顶部,我的剪贴板也已更改为控件的.text属性.这是处理此事件的唯一子,并且剪贴板在此事件后始终更改.
这是一个用vb.net编写的小型winforms项目.
更多信息:
当我点击它时,我的剪贴板被设置为标签的.text属性.标签在这里制作:
For i = 0 To lstTupChildren.Count - 1
Dim lbl As New Label()
lbl.Size = New System.Drawing.Size(250, 25)
lbl.Font = New System.Drawing.Font("Calibri (body)", 10)
lbl.Text = i + 1 & ". " & lstTupChildren(i).Item1
lbl.Location = New System.Drawing.Point(0, 25 * i)
If lstTupChildren(i).Item3 = True Then lbl.BackColor = Color.GreenYellow Else lbl.BackColor = Color.Orange 'sets the colour depending on whether the timesheet is active'
Me.Controls.Add(lbl)
AddHandler lbl.DoubleClick, AddressOf subChangeTimesheetState 'adds handler for double click to change status
'adds handlers for moving the overlay
AddHandler lbl.MouseDown, AddressOf Form_MouseDown
AddHandler lbl.MouseMove, AddressOf Form_MouseMove
'adds handler for hide context menu'
AddHandler lbl.MouseClick, AddressOf subRightClickMenu
Next
Run Code Online (Sandbox Code Playgroud)
即使我注释掉处理程序:AddHandler lbl.DoubleClick,AddressOf subChangeTimesheetState
我的剪贴板仍然改变了.
可以在这里找到解决方法:在这里解决:http://www.aspnet-answers.com/microsoft/NET-WinForms-Controls/32231136/double-click-label-and-its-text-appears-on-the- clipboard.aspx
创建一个继承标签的新类,vb代码:
公共类myLabel
Inherits Label
Private WM_GETTEXT As Integer = &HD
Private WM_LBUTTONDBLCLK As Integer = &H203
Private doubleclickflag As Boolean = False
Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = WM_LBUTTONDBLCLK Then
doubleclickflag = True
End If
If m.Msg = WM_GETTEXT AndAlso doubleclickflag Then
doubleclickflag = False
Return
End If
MyBase.WndProc(m)
End Sub
Run Code Online (Sandbox Code Playgroud)
结束班
Eri*_*Law 12
这不是您的代码,它是Windows Vista中引入的"功能".
在Windows Vista中,Windows Shell程序员检查了更改(更改列表中没有规范/对齐)更改了默认标签控件,以便在双击时将其文本复制到剪贴板.
此更改通常不会影响C++应用程序,因为它们创建/托管标签控件,但它会影响所有VS.NET应用程序.当我在Win7时间框架中发现这个时,我向(惊讶的)框架团队提交了一个错误,但是他们害怕修复这个错误,因为它已存在很长时间了.