因为背景不能设为透明我在网上找了个办法,代码见最下面但要命的问题来了,这个RTB要么不滚动还好,一滚动就什么都看不到。。请问有什么好办法?最好能治标的,或者定时重绘也行谢谢   class TransparentRichTextBox : RichTextBox
        {
            public TransparentRichTextBox()
            {
                base.ScrollBars = RichTextBoxScrollBars.None;
            }            override protected CreateParams CreateParams
            {
                get
                {
                    CreateParams cp = base.CreateParams;
                    cp.ExStyle |= 0x20;
                    return cp;
                }
            }
        }

解决方案 »

  1.   

    protected override CreateParams CreateParams
    {
        get
        {
            new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Demand();
            CreateParams cp = base.CreateParams;
            cp.ExStyle |= 0x20; 
            return cp;
        }
    }
      

  2.   

    勉强的透明了一下  class TransparentRichTextBox : RichTextBox
      {
        public TransparentRichTextBox()
          : base()
        {
          base.ScrollBars = RichTextBoxScrollBars.Vertical;
        }    //override protected CreateParams CreateParams
        //{
        //  get
        //  {
        //    CreateParams cp = base.CreateParams;
        //    cp.ExStyle |= 0x20;
        //    return cp;
        //  }
        //}
        public override Color BackColor
        {
          get
          {
            return Parent == null ? base.BackColor : Parent.BackColor;
          }
          set
          {
            base.BackColor = value;
          }
        }
      }
      

  3.   


    我win.form背景是张图片
    没有透明吧
      

  4.   


    不明白你的意思图片透明?
    我是希望在winform上的richtextbox能显示背景的图片
    也就是Richtextbox本身透明我顶楼的代码已经实现了这个功能,但在滚动文字时文字就模糊了
      

  5.   

    改成这样  [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
            static extern IntPtr LoadLibrary(string lpFileName);        protected override CreateParams CreateParams
            {
                get
                {
                    CreateParams prams = base.CreateParams;
                    if (LoadLibrary("msftedit.dll") != IntPtr.Zero)
                    {
                        prams.ExStyle |= 0x020; // transparent
                        prams.ClassName = "RICHEDIT50W";//这个一定要,而且不能改
                    }
                    return prams;
                }
            }这个不会一滚动就什么都看不到。
    但是还有点小问题,就是当滚动条出现时,RichTextBox的边框会没有,但是把RichTextBox所在窗口和其它应用窗口切换一下就正常。
    可能还需要你重绘一下边框。
      

  6.   

    文字模糊是,是因为在滚动的时候没有重绘吧,可以在滚动条的滚动事件里面加上更新画面的Richtextbox.Invalidate();试试
      

  7.   

    建议学会
    使用win32 api
      

  8.   

    http://topic.csdn.net/u/20080730/18/108472ae-72dd-4283-941a-d1296c284a33.html
    你去看看这个
      

  9.   

    http://topic.csdn.net/u/20080730/18/108472ae-72dd-4283-941a-d1296c284a33.html
    你去看看这个
      

  10.   

    hopewoo都什么时候了,你还炒房,有一层还不够,你还囤了三层
      

  11.   

    borderstype=borderstype.none 不就没滚动条了
      

  12.   

    成年烂帖又出来了.
    其实richtextbox里绘背景的话效率很低,特别当多行需要有滚动条的时候,那个显示出来的根本不能看. 比较好的办法是把richtextbox的背景设为透明,然后放在有背景的panel或者其他什么上面. 新建个自定义控件,然后继承richtextbox.把下面的代码添加进去.就能让richtextbox变透明了 C# code
    [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
            static extern IntPtr LoadLibrary(string lpFileName);        protected override CreateParams CreateParams
            {
                get
                {
                    CreateParams prams = base.CreateParams;
                    if (LoadLibrary("msftedit.dll") != IntPtr.Zero)
                    {
                        prams.ExStyle |= 0x020; // transparent
                        prams.ClassName = "RICHEDIT50W";
                    }
                    return prams;            }
            }