Winforms – Подчеркивать часть текста, отображаемого в текстовом поле

Вопрос:У меня есть строка текста для отображения и что я хочу сделать, это подчеркнуть только часть заголовка текста на дисплее. Как это сделать, пожалуйста? Сообщение: Это сообщение для имени клиента. Где "Сообщение:" подчеркнуто. Лучший ответ: Если вы хотите показать текст, используя богатое текстовое поле, вы можете сделать что-то вроде этого: richTextBox1.SelectionFont = new Font("Times New

Вопрос:

У меня есть строка текста для отображения и что я хочу сделать, это подчеркнуть только часть заголовка текста на дисплее. Как это сделать, пожалуйста?

Сообщение: Это сообщение для имени клиента.

Где “Сообщение:” подчеркнуто.

Лучший ответ:

Если вы хотите показать текст, используя богатое текстовое поле, вы можете сделать что-то вроде этого:

richTextBox1.SelectionFont = new Font(«Times New Roman», 10, FontStyle.Underline); richTextBox1.SelectedText = «Message:»; richTextBox1.SelectionFont = new Font(«Times New Roman», 10, FontStyle.Regular); richTextBox1.SelectedText = » This is a message for Name of Client.»;

Или, если сообщение является динамическим, а заголовок и текст всегда разделяются двоеточием, вы можете сделать что-то вроде этого:

string message = «Message: This is a message for Name of Client»; string[] parts = message.Split(‘:’); richTextBox1.SelectionFont = new Font(«Times New Roman», 10, FontStyle.Underline); richTextBox1.SelectedText = parts[0] + «:»; richTextBox1.SelectionFont = new Font(«Times New Roman», 10, FontStyle.Regular); richTextBox1.SelectedText = parts[1];

Или, если вы хотите динамически показывать текст в ярлыках, вы можете сделать что-то вроде этого:

string message = «Message: This is a message for Name of Client»; string[] parts = message.Split(‘:’); Label heading = new Label(); heading.Text = parts[0] + «:»; heading.Font= new Font(«Times New Roman», 10, FontStyle.Underline); heading.AutoSize = true; flowLayoutPanel1.Controls.Add(heading); Label message = new Label(); message.Text = parts[1]; message.Font = new Font(«Times New Roman», 10, FontStyle.Regular); message.AutoSize = true; flowLayoutPanel1.Controls.Add(message); Ответ №1

Используйте RichTextBox вместо этого

this.myRichTextBox.SelectionStart = 0; this.myRichTextBox.SelectionLength = this.contactsTextBox.Text.Length-1; myRichTextBox.SelectionFont = new Font(myRichTextBox.SelectionFont, FontStyle.Underline); this.myRichTextBox.SelectionLength = 0; Ответ №2

Вы можете сделать это с помощью элемента управления RichTextBox

int start = rtbTextBox.Text.IndexOf(«Message:», StringComparison.CurrentCultureIgnoreCase); if(start > 0) { rtbTextBox.SelectionStart = start; rtbTextBox.SelectionLength = «Message:».Length-1; rtbTextBox.SelectionFont = new Font(rtbTextBox.SelectionFont, FontStyle.Underline); rtbTextBox.SelectionLength = 0; }

В этом примере используйте текст, который вы указали в своем вопросе. Будет лучше, если вы инкапсулируете этот код в частный метод и передаете текст заголовка.

Например:

private void UnderlineHeading(string heading) { int start = rtbTextBox.Text.IndexOf(heading, StringComparison.CurrentCultureIgnoreCase); if(start > 0) { rtbTextBox.SelectionStart = start; rtbTextBox.SelectionLength = heading.Length-1; rtbTextBox.SelectionFont = new Font(rtbTextBox.SelectionFont, FontStyle.Underline); rtbTextBox.SelectionLength = 0; } }

и вызовите из своей формы: UnderlineHeading(«Message:»);

Ответ №3

Просто подумайте, вы можете использовать скрытое текстовое поле или создать настраиваемый элемент управления с richtextbox с подчеркиванием и использовать его в клиентском приложении. Я слышал, что есть возможность создать текстовое поле с подчеркиванием, используя GDI + api, но не уверен.

Спасибо
Махеш котекар

Оцените статью
Добавить комментарий