gpt4 book ai didi

c# - 在 Vista+ 上双击 .NET Label 控件将其文本复制到剪贴板?

转载 作者:太空狗 更新时间:2023-10-29 19:57:08 25 4
gpt4 key购买 nike

当我在 visual studio 的整个项目中搜索“剪贴板”一词时,我找不到任何匹配项。

但我的程序似乎以某种方式将剪贴板的内容更改为等于表单上控件的 .text 属性。怎么会这样?

我已经确定了处理程序,之后我的剪贴板似乎总是被更改,并添加了一个消息框以从我的剪贴板中获取文本,以尝试确定何时可能更改它。

MessageBox.Show(Clipboard.GetText)

即使在子处理事件的顶部,我的剪贴板也已经更改为控件的 .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

即使我注释掉处理程序: 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代码:

公共(public)类 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

下课

最佳答案

这不是您的代码,而是 Windows Vista 中引入的“功能”。

在 Windows Vista 中,Windows Shell 程序员 checkin 了更改(更改列表中没有规范/理由),更改了默认标签控件以在双击时将其文本复制到剪贴板。

由于 C++ 应用程序创建/托管标签控件的方式,此更改通常不会影响它们,但它会影响所有 VS.NET 应用程序。当我在 Win7 时间范围内发现这个问题时,我向(惊讶的)框架团队提交了一个错误,但他们不敢修复这个错误,因为它已经存在了很长时间。

这是重复的 Is there any way to disable the "double-click to copy" functionality of a .NET label?

关于c# - 在 Vista+ 上双击 .NET Label 控件将其文本复制到剪贴板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17048395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com