在RichtextBox中加粗

时间:2012-02-16 15:43:52

标签: c# winforms fonts richtextbox

我一直在研究我的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也是如此。

Example http://i40.tinypic.com/4lov91.png

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

这些行添加如

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

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

2 个答案:

答案 0 :(得分:9)

线......

int srt = bold.Find(name);

...正在寻找第一次出现该行的单词。如果您查看未设置为粗体的单词,那么您将看到它们都出现在富文本框的前面。

答案 1 :(得分:0)

我的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