首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RichTextBox文本颜色

RichTextBox文本颜色
EN

Stack Overflow用户
提问于 2013-03-27 22:30:28
回答 3查看 211关注 0票数 0

我创建了RichTextBox并添加了以下代码:

代码语言:javascript
复制
private void richTextBox1_TextChanged(object sender, EventArgs e)
    {
        //( )
        int selectionStart = richTextBox1.SelectionStart;
        string helpText = richTextBox1.Text;
        int closerPos;

        for (int i = 0; i < helpText.Length; i++)
        {
            if (helpText[i] == '(')
            {
                selectionStart = richTextBox1.SelectionStart;
                closerPos = helpText.Substring(i).IndexOf(')') + i;

                helpText = helpText.Substring(i + 1, closerPos - i - 1);
                richTextBox1.Text = richTextBox1.Text.Remove(i + 1, closerPos - i - 1);


                richTextBox1.Select(i + 1, 0);
                richTextBox1.SelectionColor = Color.Red;
                richTextBox1.SelectedText = helpText;
                richTextBox1.SelectionColor = Color.Black;


                helpText = richTextBox1.Text;
                richTextBox1.SelectionStart = selectionStart;
            }
        }
    }

此代码应将( )之间的文本涂上颜色。例如:

(需要着色)文本(sdadsasd)

()之间的文本需要用红色表示。但只有最后一段文字是彩色的。我怎么才能修好它?

EN

回答 3

Stack Overflow用户

发布于 2013-03-27 22:48:46

如果条件允许的话,你只会产生第一次妄想。

尝试像helpText.Split('(');那样拆分文本

然后迭代它,并执行您的逻辑。

票数 0
EN

Stack Overflow用户

发布于 2013-03-27 23:24:03

我认为你不需要逐字节移动就可以完成这个任务。您可以尝试使用IndexOf方法来完成它。

这是我一直在想的:

代码语言:javascript
复制
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
    string rbText = richTextBox1.Text;

    int position = 0;
    int startBrace = rbText.IndexOf('(', position) + 1;

    while (startBrace != -1)
    {
        position = rbText.IndexOf(')', startBrace);

        if (position != -1)
        {
             richTextBox1.Select(startBrace, position - startBrace);
             richTextBox1.SelectionColor = Color.Red;

             startBrace = rbText.IndexOf('(', position) + 1;
        }
        else
             break;
    }
}

请记住,我还没有完全测试这段代码。

票数 0
EN

Stack Overflow用户

发布于 2013-03-28 00:30:56

我已经看到了一个潜在的问题,当helpText只是一个单变量字符串时,它就被用作一个数组。尝试将整个helpText分解为一个char数组,然后遍历该数组以找到您的括号。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15670783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档