突出显示标签Windows窗体

时间:2009-03-31 19:52:55

标签: c# .net windows winforms user-interface

有没有办法让.NET Windows表单上的标签可突出显示,以允许复制文本。我试图使用一个看起来像标签的文本框来做到这一点,但这会导致闪烁的光标。

6 个答案:

答案 0 :(得分:12)

我认为这非常接近:

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;

答案 1 :(得分:6)

如果您希望它是一个可预测,表现良好且标准的控件,并且支持所有键盘和快捷键,您只需要一个文本框。然后闪烁的光标是一个正常的有用功能,为什么要打它呢?

答案 2 :(得分:1)

可选静态文本显示闪烁的光标并不罕见。如果在Windows资源管理器中获取任何文件的属性并选择该窗口中的任何数据,您还会看到闪烁的光标。

答案 3 :(得分:0)

我之前做过这个,几年前,我想我使用了这个Win API调用(但是使用常规文本框):http://www.dreamincode.net/forums/showtopic35107.htm

答案 4 :(得分:0)

您在User32.dll中拥有HideCaret功能。像这样使用它:

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

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

这样可以防止在文本框具有焦点时显示插入符号。

答案 5 :(得分:0)

要考虑的一件事是继续使用标签,然后使用以下方式以编程方式将内容(Label的文本)复制到剪贴板中:

Clipboard.SetText(yourLabel.Text);