我有一行文本要顯示,而我想要執行的操作只是在顯示中僅對文本的標題部分加下劃線。我該如何做到這一點?Winforms - 要在文本框中顯示的文本的下劃線部分
消息:這是客戶名稱的消息。
其中「消息:」加下劃線。
我有一行文本要顯示,而我想要執行的操作只是在顯示中僅對文本的標題部分加下劃線。我該如何做到這一點?Winforms - 要在文本框中顯示的文本的下劃線部分
消息:這是客戶名稱的消息。
其中「消息:」加下劃線。
如果你想使用豐富的文本框來顯示文本,你可以做這樣的事情:
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);
可以使用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:");
哇,我發誓我寫它,我們完成幾乎相同:) –
我更新了我的原始帖子與字符串的示例。我想要的是隻指定特定行上的開始文本加下劃線。 – Kobojunkie
我已經使用您在問題中提供的文字和位置更新了我的答案。 – Steve
使用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;
想一想,您可以使用蒙面文本框或使用richtextbox創建自定義控件,並在客戶端應用程序中使用下劃線和下劃線。我聽說有創建帶有GDI + api下劃線的文本框的機會,但不確定。
感謝 馬赫什kotekar
您正在使用這種錯誤的控制。如果你真的感到壓倒性的理由做下劃線,然後選擇RichTextBox。 – Steve
我從來沒有使用過其中之一。我如何格式化文本以強調我需要它的那部分字符串? – Kobojunkie
你想要顯示的文字是什麼?你怎麼知道文本的哪一部分是標題? –