【问题标题】:RichTextBox not printing newlineRichTextBox 不打印换行符
【发布时间】:2015-10-13 10:59:01
【问题描述】:

我有这种方法可以替换(粗体)字符串中的一些单词,并在 ritchtextBox 中显示更改后的字符串。 在最后一个字符串中,我需要用换行符替换 @ 符号。 我已经尝试检查这个论坛并提供了几种解决方案,但没有任何效果。

我使用的方法是

private string bold(string ing)
{
    StringBuilder builder = new StringBuilder();

    ing = " " + ing + " ";

    builder.Append(@"{\rtf1\ansi");
    foreach (string word in splitwords)
    {
        var regex = new Regex(@"(?<![\w])" + word + @"(?![\w])", RegexOptions.IgnoreCase);
        ing = regex.Replace(ing, m => @"\b" + m.ToString() + @"\c0");
    }

    ing = ing.Replace(@"\b", @"\b ");
    ing = ing.Replace(@"\c0", @" \b0");
    ing = ing.Replace("@", Environment.NewLine);

    builder.Append(ing);
    builder.Append(@"}");
     MessageBox.Show("builder.ToString():" + builder.ToString());
    return builder.ToString();
}

当我调用此方法并将其“放入”到 ritchTextBox 时,它不会打印新行

ingred.Rtf = bold(ingd);

我应该如何解决这个问题??

EDIT:: 输入字符串 - line1 @ line2 @ line3

在MessageBox中输出

Builder.ToString() : {\rtf1\ansi\b line1\b0
line2
line3
}

ritchTextBox 中的输出:line1 line2 line3

【问题讨论】:

  • 我在这里没有看到任何(\r)\n O_O
  • 因为它是一个 RitchTextBox 我正在使用 Environment.NewLine。但我已经试过了,没有乐趣
  • 啊,我现在明白了。执行Replace 之前的string 是否包含任何@
  • 是的,它确实包含
  • 向我们展示一个输入字符串的示例及其输出。

标签: c# formatting richtextbox


【解决方案1】:

代替

 ing = ing.Replace("@", Environment.NewLine);

试试

    ing = ing.Replace("@", @"\par\r\n");

【讨论】:

  • \par 用于段落,所以它在这里就像一个黑客。
【解决方案2】:

使用此代码替换

 int startIndex = 0, index;
RichTextBox myRtb = new RichTextBox(); // if have A richtextBox Remove thisline and Use your Richtextbox
            myRtb.Rtf = STRRTF;// if have A richtextBox Remove thisline and Use your Richtextbox
     while ((index = myRtb.Text.IndexOf("@", startIndex)) != -1)
                {
                    myRtb.Select(index, word.Length);

                    myRtb.SelectedText ="\n";

                    startIndex = index + 1;
                }

【讨论】:

    【解决方案3】:

    最好使用Environment.NewLine 添加新行确保yourRTB.MultiLine 属性设置为true。像这样将字符串分配给富文本框yourRTB.AppendText(t)

    【讨论】:

    • 通过设置它的 Rtf 属性将字符串分配给您的文本框我试试这对我来说工作正常。
    • 但这不是我在这行做什么? ingred.Rtf = 粗体(ingd);
    • 使用 yourRTB.AppendText(t) 分配字符串;工作正常并在richtextbox中添加新行。
    【解决方案4】:

    尝试用"\r\n" 字符序列替换它?

    编辑:ritchtextBoxMultiLine 属性是否启用?

    【讨论】:

    • 这是我在这个论坛上遇到的问题之一,但它也不起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多