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

tun*_*h24 53 .net c# asp.net label winforms

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

Cha*_*thJ 86

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

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

TextBox1.Text = "Hello, Select Me";
TextBox1.ReadOnly = true;
TextBox1.BorderStyle = 0;
TextBox1.BackColor = this.BackColor;
TextBox1.TabStop = false;
Run Code Online (Sandbox Code Playgroud)

不信?这是一个例子给你.

在此输入图像描述

  • 您可能遇到的问题是,如果您动态设置texbox的文本,如果文本比文本框宽,则会隐藏文本,这与标签不同. (7认同)
  • @TheMuffinMan你必须将«WordWrap»属性设置为«true». (2认同)

小智 13

Bala R回答:

"使用BorderBox设置为None且Readonly设置为true的TextBox和Backcolor匹配容器的TextBox."

如果Text字符串非常长,并且其中Width的字符串TextBox不足以显示所有文本,则可以设置其Width属性TextBox以显示其所有文本.

如果您需要知道正确的数字Width,那么您可以使用此MeasureString方法Graphics.您可以从(在这种情况下)的CreateGraphics()方法中获取实例.ControlTextBox

第一个参数是TextBox的Text,第二个参数是TextBox的Font.此函数返回SizeFstruct.您只需要它的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;
}
Run Code Online (Sandbox Code Playgroud)

  • 如果您有一个固定宽度的文本框,要使用此代码调整其高度的大小,请参阅此问题:/sf/ask/2050950821/ -宽度 (2认同)

Amr*_*mry 7

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


Bal*_*a R 5

使用TextBoxwith BorderStyleset to NoneReadonlyset to true和Backcolor来匹配容器的颜色.


rea*_*akt 5

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

  • 这是时间改变了正确答案的情况之一,但是没有一个更好的方法可以使答案更加人所共知。 (2认同)
  • 这是一个相当隐藏的功能,大多数用户不会弄清楚这一点,他们很可能会选择尝试选择文本并按 Ctrl+C。 (2认同)
  • @sɐunıɔןɐqɐp 在这种情况下,您需要通知用户该功能。 (2认同)