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