LinkLabel в C# копирует свой текст по двойному щелчку

Когда я дважды щелкаю LinkLabel в WindowsForms, он копирует его текст; как я могу предотвратить это?

Кстати, это приложение.Net 2.0, если это что-то меняет.

Спасибо

3 ответа

Решение

Вы всегда можете очистить буфер обмена, используя:

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

Кажется, что это поведение встроено в LinkLabel и что нет способа переопределить его.

Тестирование показывает, что буфер обмена уже изменился к моменту запуска события MouseDoubleClick.

FWIW, мне никогда не был нужен этот элемент управления - обычный Label с некоторыми стилями и использованием событий MouseEnter/MouseLeave помог мне во многих проектах.

Что вы можете сделать, это создать свой собственный ярлык и извлечь его из Control как публичного класса MyLabel : Control а затем нарисуйте текст в нем как

защищенное переопределение void OnPaint(PaintEventArgs e)
{
        SolidBrush TextBrush = новый SolidBrush(this.ForeColor);
        TextRenderer.DrawText(e.Graphics, this.Text, this.Font, this.ClientRectangle, this.ForeColor, TextFormatFlags.Left | TextFormatFlags.VerticalCenter);
}
Другие вопросы по тегам