Вопрос:
У меня есть строка текста для отображения и что я хочу сделать, это подчеркнуть только часть заголовка текста на дисплее. Как это сделать, пожалуйста?
Сообщение: Это сообщение для имени клиента.
Где “Сообщение:” подчеркнуто.
Лучший ответ:
Если вы хотите показать текст, используя богатое текстовое поле, вы можете сделать что-то вроде этого:
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, но не уверен.
Спасибо
Махеш котекар