打赏

C# RichTextBox实现背景透明

这几天在做一个文本编辑器,要将RichTextBox的背景透明,但是发现C#的RichTextBox是不支持将背景设置为Transparent(透明)。

网上找了好多方法,但都不行。
后来自己想了个办法,自己定义个类继承RichTextBox。


首先启动Visual Studio(我用的是Visual Studio 2008),打开项目,选择新建-类,将名字改为"RichTextBoxTM"。

打开类,将namespace里面的内容都清空,并加入以下代码:

class RichTextBoxTM : RichTextBox
    {
        [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
        private static extern IntPtr LoadLibrary(string lpFileName);
        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams prams = base.CreateParams;
                if (LoadLibrary("msftedit.dll") != IntPtr.Zero)
                {
                    prams.ExStyle |= 0x020;
                    prams.ClassName = "RICHEDIT50W";
                }
                return prams;
            }
        }
    }

保存类,并返回窗体设计界面,可以在工具栏中看到RichTextBoxTM,将他拖到窗体上。编译就可以看到RichTextBox的背景变透明了。



posted @ 2020-02-09 18:21  _Return  阅读(168)  评论(0编辑  收藏