【问题标题】:Bold in RichtextBoxRichtextBox 中的粗体
【发布时间】:2012-03-08 00:41:17
【问题描述】:

我一直在研究我的 Richtextbox,但我遇到了一些奇怪的事情...... 我想把每行的第一个字加粗

使用此代码:

        RichTextBox bold = richTextBox1;
        foreach (string line in bold.Lines)
        {
            string name = line.Split(' ')[0];
            int srt = bold.Find(name);
            bold.Select(srt, name.Length);
            bold.SelectionFont = new Font(bold.Font, FontStyle.Bold);
        } 

但由于某种原因,有些行被跳过了。 从我注意到的情况来看,这取决于该行以什么单词开头

例如 Name: 被跳过,但 Name1: 没问题,ProcessId、VirtualSize 和 WorkingSetSize 也是如此。

如果需要更多解释,请告诉我。

线条像这样添加

richTextBox1.Text += "Name: "+ queryObj["Name"] + Environment.NewLine;

将所有内容添加到richtextbox后调用使所有第一个单词加粗的函数。

【问题讨论】:

  • 你是如何将行添加到richtextbox?
  • 我看到你所有的第一个单词都以 : 结尾。您可以尝试使用 string name = line.Split(': ')[0];代替?
  • 有什么理由拒绝投票?...
  • Stackoverflow 的工作方式就像有人提出问题而聪明的人给出答案。回答一个问题就像回答一个问题

标签: c# winforms fonts richtextbox


【解决方案1】:

如果没有以正确的顺序将它们发送到我的粗体功能,我的 Richtextbox 不会选择所有出现的事件;所以我的修复包括在开始文本选择之前检查 start (srt) 是否大于 0。它是这样的:

foreach (string line in bold.Lines)
{
    int srt = bold.Find(name);
    if (srt > 0)
    {
        bold.Select(srt, name.Length);
        bold.SelectionFont = new System.Drawing.Font(bold.Font, FontStyle.Bold);
    }
}

现在它总是选择第一个匹配项。

PS:namestringboldRichTextBox

【讨论】:

    【解决方案2】:

    线...

    int srt = bold.Find(name);
    

    ...正在查找第一次出现的以该行开头的单词。如果您查看未设置为粗体的字词,您会发现它们都出现在富文本框中的较早位置。

    【讨论】:

    • 就是这样,我不敢相信我没有想到我自己。非常感谢 :) 使用 int srt = bold.Find(line); 修复它而是。
    猜你喜欢
    • 2014-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    • 2011-08-21
    • 1970-01-01
    相关资源
    最近更新 更多