Можно ли выделить/выбрать часть текста в элементе управления меткой Windows Form? Я знаю, что это возможно с помощью элемента управления RTFtextbox, но использование этого элемента управления будет чрезмерным, поскольку мне нужно создать много экземпляров метки.
Можно ли выбрать текст на ярлыке формы Windows?
Ответ 1
Можно ли выбрать текст на ярлыке формы Windows? - НЕТ (По крайней мере, нет простого способа без переопределения метода Label.Paint)
Вы можете легко изменить TextBox для этой цели.
TextBox1.Text = "Hello, Select Me";
TextBox1.ReadOnly = true;
TextBox1.BorderStyle = 0;
TextBox1.BackColor = this.BackColor;
TextBox1.TabStop = false;
Не верьте? вот вам пример.
Ответ 2
Как сказал Bala R:
"Использовать TextBox с BorderStyle, установленным в None, и Readonly установить значение true и Backcolor, чтобы соответствовать таковой в контейнере.".
Если текстовая строка очень длинная, а Width
для TextBox
недостаточно для отображения всего текста, вы можете установить для свойства Width
свойство TextBox
для отображения всего текста.
Если вам нужно знать правильный номер для Width
, для этого вы можете использовать метод MeasureString
Graphics
. Вы можете получить экземпляр из CreateGraphics()
метода Control
(TextBox
в этом случае).
Первый параметр - TextBox Text, а вторым параметром является TextBox Font. Эта функция возвращает SizeF
struct. Вам нужно только свойство 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;
}
Ответ 3
Нет, невозможно выбрать текст в ярлыке формы Windows. Вместо этого вы можете использовать текстовое поле для чтения.
Ответ 4
Используйте TextBox
с BorderStyle
для None
и Readonly
для true
и Backcolor, чтобы соответствовать таковому для контейнера.
Ответ 5
Вы не сможете выделить часть текста на ярлыке. Однако вы можете использовать изображение и установить его в свойство Label.Image, если текст для этих меток статичен.