C#中的LinkLabel双击复制其文本

时间:2012-09-08 05:30:55

标签: c# winforms linklabel

当我在WindowsForms中双击LinkLabel时,它会复制其文本;我怎么能阻止这个?

顺便说一句,这是一个.Net 2.0应用程序,如果这有任何区别的话。

由于

3 个答案:

答案 0 :(得分: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);
    }

答案 1 :(得分:1)

似乎这种行为内置于LinkLabel,并且无法覆盖它。

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

FWIW,我从来不需要这个控件 - 一个带有一些样式的常规Label以及MouseEnter / MouseLeave事件的使用在很多项目中都很好用。

答案 2 :(得分:0)

您可以做的是创建自己的标签,并将其从Control派生为公共类MyLabel : Control,然后自己在其中绘制文本

protected override void 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 );
}