Is it possible to select text on a Windows form label?
Is it possible to select text on a Windows form label? - NO (At least no easy way without overriding Label.Paint method)
You can easily change a TextBox for this purpose.
TextBox1.Text = "Hello, Select Me";
TextBox1.ReadOnly = true;
TextBox1.BorderStyle = 0;
TextBox1.BackColor = this.BackColor;
TextBox1.TabStop = false;
TextBox1.Multiline = True; // If needed
Don't believe? here is an example for you.
Option 2 (If you just want to enable copy label text)
Double clicking on the label copies the text to clipboard. This is the default winforms Label functionality. You can add a toolTip control to improve the usability if you like.
Like Bala R answered:
"Use a TextBox with BorderStyle set to None and Readonly set to true and Backcolor to match that of the container.".
If the Text string is very long, and the Width
of the TextBox
is not enough to display all text, then you can set the Width
property of the TextBox
to display all it's Text.
If you need to know the correct number for Width
, then you can use the MeasureString
method of Graphics
for this. You can get the instance from CreateGraphics()
method of the Control
(TextBox
in this case).
First parameter is TextBox's Text, and second parameter is TextBox's Font. This function returns SizeF
struct. You need only the Width property of it, convert it to integer with (int)size.Width
or (int)Math.Round(size.Width)
.
Don't forget to call the Dispose()
method of the graphics instance after, because you won't need it anymore.
You can write your own function that will do all this process:
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;
}
Double clicking on a label will copy the text to the clipboard. This is now the default behavior of Windows Forms labels.