是否可以在Windows窗体标签控件中突出显示/选择部分文本?我知道它可以使用RTFtextbox控件,但使用该控件会有点过分,因为我需要创建许多标签实例。
答案 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;
不信?这是一个例子。
答案 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属性,将其转换为Control
或TextBox
的整数。
不要忘记之后调用图形实例的SizeF
方法,因为你不再需要了它。
您可以编写自己的函数来完成所有这些过程:
(int)size.Width
答案 2 :(得分:7)
不,无法在Windows窗体标签上选择文本。您可以改为使用只读文本框。
答案 3 :(得分:5)
使用TextBox
BorderStyle
设为None
且Readonly
设为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);
}