Подсветка надписей Windows Forms - PullRequest
8 голосов
/ 31 марта 2009

Есть ли способ сделать метку в форме .NET Windows, чтобы она была подсветкой , чтобы можно было копировать текст. Я попытался сделать это с помощью текстового поля, которое было похоже на метку, но в результате появился мигающий курсор.

Ответы [ 6 ]

12 голосов
/ 01 апреля 2009

Я думаю, что это чертовски близко:

textBox.BackColor = System.Drawing.SystemColors.Control;
textBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
textBox.ReadOnly = true;
textBox.Text = "This is selectable text";
textBox.MouseUp += new MouseEventHandler(
                          delegate(object sender, MouseEventArgs e)
                             { HideCaret((sender as Control).Handle); });

[DllImport("User32.dll")]
static extern Boolean HideCaret(IntPtr hWnd);

А если вам нужно охватить более одной строки:

textBox.Multiline = true;
6 голосов
/ 01 апреля 2009

Если вы хотите, чтобы это был предсказуемый, хорошо управляемый и стандартный элемент управления со всей поддержкой клавиш и ярлыков, вам просто нужно текстовое поле. И тогда мигающий курсор - нормальная полезная функция, зачем бороться с ней?

1 голос
/ 31 марта 2009

Нередко выбираемый статический текст показывает мигающий курсор. Если вы получите свойства любого файла в проводнике Windows и выберете в этом окне какие-либо данные, вы также увидите мигающий курсор.

0 голосов
/ 01 апреля 2009

Следует учесть одну вещь: использовать метку, а затем программно скопировать содержимое (текст метки) в буфер обмена, используя:

Clipboard.SetText(yourLabel.Text);
0 голосов
/ 01 апреля 2009

У вас есть функция HideCaret в User32.dll. Используйте это так:

[DllImport("User32.dll")]
static extern bool HideCaret(IntPtr hWnd);

private void textBox_Enter(object sender, EventArgs e)
{
    HideCaret(textBox.Handle);
}

Это предотвратит отображение каретки, когда текстовое поле имеет фокус.

0 голосов
/ 01 апреля 2009

Я делал это ранее, пару лет назад, я думаю, что использовал этот вызов Win API (но с обычным текстовым полем): http://www.dreamincode.net/forums/showtopic35107.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...