Winforms - 在文本框中显示的文本的下划线部分

时间:2012-06-04 13:02:21

标签: c# winforms

我有一行要显示的文本,我想要做的是仅在显示中显示文本的标题部分。我该如何做到这一点?

消息:这是客户名称的消息。

“消息:”的下划线。

4 个答案:

答案 0 :(得分:5)

改为使用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;

答案 1 :(得分:4)

您可以使用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:");

答案 2 :(得分:3)

如果要使用富文本框显示文本,可以执行以下操作:

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);

答案 3 :(得分:0)

只是想一想,您可以使用屏蔽文本框或使用带有下划线的richtextbox创建自定义控件,并在客户端应用程序中使用它。我听说有可能使用GDI + api创建带下划线的文本框,但不确定。

由于 Mahesh kotekar