C# 中的 LinkLabel 在双击时复制其文本
Posted
技术标签:
【中文标题】C# 中的 LinkLabel 在双击时复制其文本【英文标题】:LinkLabel in C# copies its Text on double-click 【发布时间】:2012-09-08 05:30:55 【问题描述】:当我在 WindowsForms 中双击 LinkLabel 时,它会复制其文本;我怎样才能防止这种情况发生?
顺便说一句,这是一个 .Net 2.0 应用程序,如果这有什么不同的话。
谢谢
【问题讨论】:
它的文字是指链接标签文字吗?如果是的话,后面肯定有这个代码。 不,没有任何代码可以复制任何东西。自己试试;将 LinkLabel 添加到表单,双击它并粘贴到记事本中。 它似乎不是特定于LinkLabel
- Label
的行为方式相同(LinkLabel
派生自 Label
)。
【参考方案1】:
您始终可以使用以下方法清除剪贴板:
Clipboard.Clear();
更新:
您可以在鼠标双击事件中使用此代码。
试试这个:
private void linkLabel1_MouseDoubleClick(object sender, MouseEventArgs e)
Clipboard.Clear();
更新 2:
使用以下代码,它不会复制可链接的值,并且它还保留您的剪贴板。您必须将这些代码与鼠标输入事件和鼠标双击事件一起使用。
试试这个:
public string str;
private void linkLabel1_MouseEnter(object sender, EventArgs e)
str = Clipboard.GetText();
linkLabel1.MouseDoubleClick+=new MouseEventHandler(linkLabel1_MouseDoubleClick);
private void linkLabel1_MouseDoubleClick(object sender, MouseEventArgs e)
Clipboard.SetText(str);
【讨论】:
不,这似乎是一个 hack;我不想清除用户的剪贴板 :) 我找不到覆盖默认行为的解决方案。我将此标记为答案,因为它是一种可以在某些情况下使用的解决方法。如果没有人有更好的解决方案,请分享。【参考方案2】:似乎这种行为是内置在LinkLabel 中的,并且没有办法覆盖它。
测试显示剪贴板在触发 MouseDoubleClick 事件时已经更改。
FWIW,我从来不需要这个控件 - 一个带有一些样式和使用 MouseEnter/MouseLeave 事件的常规标签在许多项目中为我提供了很好的服务。
【讨论】:
一个普通的有同样的行为【参考方案3】:您可以做的是创建自己的标签并将其从 Control 派生为公共类MyLabel : Control
,然后自己在其中绘制文本为
【讨论】:
以上是关于C# 中的 LinkLabel 在双击时复制其文本的主要内容,如果未能解决你的问题,请参考以下文章
安装程序在使用 Process.Start() 启动时失败,但在双击时工作