当我在 WindowsForms 中双击 LinkLabel 时,它会复制其文本;我怎样才能防止这种情况?
顺便说一句,这是一个 .Net 2.0 应用程序,如果这有什么不同的话。
谢谢
您始终可以使用以下命令清除剪贴板:
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);
}
似乎这种行为是内置在LinkLabel中的,并且没有办法覆盖它。
测试显示剪贴板在触发 MouseDoubleClick 事件时已经更改。
FWIW,我从来不需要这个控件——一个带有一些样式和使用 MouseEnter/MouseLeave 事件的常规标签在许多项目中为我提供了很好的服务。
您可以做的是创建自己的标签并将其从 Control 派生为公共类MyLabel : Control
,然后自己在其中绘制文本
受保护的覆盖无效 OnPaint(PaintEventArgs e) { SolidBrush TextBrush = new SolidBrush(this.ForeColor); TextRenderer.DrawText(e.Graphics, this.Text, this.Font, this.ClientRectangle, this.ForeColor, TextFormatFlags.Left | TextFormatFlags.VerticalCenter); }