是否可以在Windows表单标签上选择文本?

时间:2011-10-13 00:31:30

标签: c# .net asp.net winforms label

是否可以在Windows窗体标签控件中突出显示/选择部分文本?我知道它可以使用RTFtextbox控件,但使用该控件会有点过分,因为我需要创建许多标签实例。

7 个答案:

答案 0 :(得分:81)

是否可以在Windows表单标签上选择文本? - NO(至少没有覆盖Label.Paint方法的简单方法)

您可以轻松地为此目的更改TextBox。

TextBox1.Text = "Hello, Select Me";
TextBox1.ReadOnly = true;
TextBox1.BorderStyle = 0;
TextBox1.BackColor = this.BackColor;
TextBox1.TabStop = false;

不信?这是一个例子。

enter image description here

答案 1 :(得分:12)

喜欢 Bala R 回答:

  

“使用BorderStyle设置为None且Readonly设置为true的TextBox   和Backcolor匹配容器的那个。“。

如果文本字符串很长,并且Width的{​​{1}}不足以显示所有文本,那么您可以设置TextBox的{​​{1}}属性显示它的所有文本。

如果您需要知道Width的正确数字,那么您可以使用TextBox Width方法。您可以从MeasureString的{​​{1}}方法获取实例(在这种情况下为Graphics)。

第一个参数是TextBox的Text,第二个参数是TextBox的Font。该函数返回CreateGraphics()结构。您只需要它的Width属性,将其转换为ControlTextBox的整数。

不要忘记之后调用图形实例的SizeF方法,因为你不再需要了它。


您可以编写自己的函数来完成所有这些过程:

(int)size.Width

答案 2 :(得分:7)

不,无法在Windows窗体标签上选择文本。您可以改为使用只读文本框。

答案 3 :(得分:5)

使用TextBox BorderStyle设为NoneReadonly设为true,Backcolor与容器匹配。{/ p>

答案 4 :(得分:3)

您将无法突出显示标签上的部分文字。但是,如果这些标签的文本是静态的,则可以使用图像并将其设置为Label.Image属性。

答案 5 :(得分:2)

双击标签会将文本复制到剪贴板。现在,这是Windows窗体标签的默认行为。

答案 6 :(得分:0)

我知道这个问题是关于选择标签文本的部分,但是我认为文本最终应放置在剪贴板上。

因此,如果您不介意复制整个文本,只需在标签上设置一个Click事件即可将其文本复制到剪贴板:

myLabel.Click += new System.EventHandler(MyLabel_Click);

// ...

private void MyLabel_Click(object sender, EventArgs e)
{
   Clipboard.SetText(myLabel.Text);
}