C# 中richtextbox中如何改变选中行的背景色在C# 中使用richtextbox控件,进行关键字和控件内的文字进行匹配后,想把关键字所在的整行背景色都改变,怎么办?请注意不是改变关键字的字体颜色,而是被选中的整行的背景色。

解决方案 »

  1.   

                FontDialog fd = new FontDialog();
                fd.ShowColor = true;
                fd.ShowEffects = true;
                fd.ShowApply = true;
                if (fd.ShowDialog() != DialogResult.Cancel)
                {
                    this.richTextBox1.SelectionColor = fd.Color;
                    this.richTextBox1.SelectionFont = fd.Font;
                    this.richTextBox1.SelectionBackColor = Color.Blue;
                }你看看吧,偶研究出来了,或者去空间下载我的资源,上面有
      

  2.   

    呵呵,那我去看看,谢谢啊。
    可richTextBox好像没有SelectionBackColor 啊?
      

  3.   

    呵呵,那我去看看,谢谢啊。
    可richTextBox好像没有SelectionBackColor 啊?
      

  4.   

    主要原理是:将其的编辑框透明掉. 背景色其实就是他下面的pannel控件的背景色而已! 创建一个新类 继承自 richTextBox.
    class TransparentRichTextBox : RichTextBox
            {
                public TransparentRichTextBox()
                {
                    base.ScrollBars = RichTextBoxScrollBars.None;
                }            override protected CreateParams CreateParams
                {
                    get
                    {
                        CreateParams cp = base.CreateParams;
                        cp.ExStyle |= 0x20;
                        return cp;
                    }
                }
            }base 关键字用于从派生类中访问基类的成员:调用基类上已被其他方法重写的方法。  使用base就可以代替RichTextBox.并使用RichTextBox的方法.
    override:要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现,必须使用 override 修饰符.CreateParams:封装创建控件时所需的信息。这里扩展了创建RichTextBox的信息.ExStyle:扩展窗口样式值的按位组合。|= 0x20: 或运算.该运算导致richTextBox背景色成透明.
      

  5.   

    我发现在richtextbox中有一个selectcolor属性,在选中行中,设置这个eg:richtextbox1.selectcolor=color.green;
    会对选中的字背景色进行绿色显示,但不能吧没选中的同一行其他部分背景色改变;