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

C#中的LinkLabel通过双击复制其文本,c#,winforms,linklabel,C#,Winforms,Linklabel,在WindowsForms中双击链接标签时,它会复制其文本;我怎样才能防止这种情况 顺便说一句,这是一个.NET2.0应用程序,如果这有什么区别的话 谢谢您始终可以使用以下方法清除剪贴板: Clipboard.Clear(); 更新: 您可以在鼠标双击事件中使用此代码 试试这个: private void linkLabel1_MouseDoubleClick(object sender, MouseEventArgs e) { Clipboard.Clear();

在WindowsForms中双击链接标签时,它会复制其文本;我怎样才能防止这种情况

顺便说一句,这是一个.NET2.0应用程序,如果这有什么区别的话


谢谢

您始终可以使用以下方法清除剪贴板:

Clipboard.Clear();
更新:

您可以在鼠标双击事件中使用此代码

试试这个:

private void linkLabel1_MouseDoubleClick(object sender, MouseEventArgs e)
    {
        Clipboard.Clear();
    }
更新2:

使用以下代码,它不会复制linklable的值,也会保留剪贴板。必须将这些代码用于鼠标输入事件和鼠标双击事件

试试这个:

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);
    }

似乎这种行为是内置于中的,没有办法覆盖它

测试表明,在触发MouseDoubleClick事件时,剪贴板已经更改


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

您可以做的是创建自己的标签,并将其从控件派生为public类
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 ); } 受保护的覆盖无效OnPaint(PaintEventArgs e) { SolidBrush TextBrush=新的SolidBrush(this.ForeColor); TextRenderer.DrawText(例如Graphics、this.Text、this.Font、this.ClientRectangle、this.ForeColor、TextFormatFlags.Left | TextFormatFlags.VerticalCenter); }
它的文本意味着链接标签文本?如果是,则必须为此编写代码。不,没有任何代码可以复制任何内容。你自己试试看;将链接标签添加到表单中,双击它并在记事本中粘贴。它似乎不是特定于
LinkLabel
-
Label
的行为方式相同(
LinkLabel
源于
Label
)。不,这看起来像是一种黑客行为;我不想清除用户的剪贴板:)我找不到覆盖默认行为的解决方案。我将此标记为一个答案,因为它是一个可以在某些情况下使用的变通方法。如果没有人有更好的解决方案,请分享。常客也有同样的行为