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的背景变透明了。