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

问题描述 投票:54回答:7

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

c# .net asp.net winforms label
7个回答
89
投票

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

您可以为此轻松地更改文本框。

TextBox1.Text = "Hello, Select Me";
TextBox1.ReadOnly = true;
TextBox1.BorderStyle = 0;
TextBox1.BackColor = this.BackColor;
TextBox1.TabStop = false;
TextBox1.Multiline = True; // If needed

不相信吗?这是给你的例子。

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS8xTTR3SC5wbmcifQ==” alt =“在此处输入图像描述”>


13
投票

Bala R回答:

“使用将BorderStyle设置为None且将Readonly设置为true的TextBox和背景色以匹配容器的颜色。”]

如果文本字符串很长,并且WidthTextBox不足以显示所有文本,则可以设置WidthTextBox属性以显示所有文本。

如果您需要知道Width的正确数字,则可以使用MeasureStringGraphics方法。您可以从CreateGraphics()Control方法获得实例(在这种情况下为TextBox)。

第一个参数是TextBox的Text,第二个参数是TextBox的Font。此函数返回SizeF结构。您只需要它的Width属性,用(int)size.Width(int)Math.Round(size.Width)将其转换为整数。

不要忘了之后再调用图形实例的Dispose()方法,因为您将不再需要它。


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

static void SetText(TextBox textBox, string str)
{
   Graphics graphics = textBox.CreateGraphics();
   SizeF size = graphics.MeasureString(str, textBox.Font);
   graphics.Dispose();
   textBox.Width = (int)Math.Round(size.Width);
   textBox.Text = str;
}

7
投票

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


7
投票

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


5
投票

使用TextBox设置为BorderStyleNone设置为Readonly,并使用背景色以匹配容器的true。>


3
投票

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


0
投票

我知道这个问题是关于选择标签文本的部分

© www.soinside.com 2019 - 2024. All rights reserved.