2

当我在 WindowsForms 中双击 LinkLabel 时,它会复制其文本;我怎样才能防止这种情况?

顺便说一句,这是一个 .Net 2.0 应用程序,如果这有什么不同的话。

谢谢

4

3 回答 3

2

您始终可以使用以下命令清除剪贴板:

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);
    }
于 2012-09-08T05:35:12.817 回答
1

似乎这种行为是内置在LinkLabel中的,并且没有办法覆盖它。

测试显示剪贴板在触发 MouseDoubleClick 事件时已经更改。

FWIW,我从来不需要这个控件——一个带有一些样式和使用 MouseEnter/MouseLeave 事件的常规标签在许多项目中为我提供了很好的服务。

于 2012-09-08T06:08:13.003 回答
0

您可以做的是创建自己的标签并将其从 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);
}
于 2013-05-03T13:32:55.490 回答