因为背景不能设为透明我在网上找了个办法,代码见最下面但要命的问题来了,这个RTB要么不滚动还好,一滚动就什么都看不到。。请问有什么好办法?最好能治标的,或者定时重绘也行谢谢 class TransparentRichTextBox : RichTextBox
{
public TransparentRichTextBox()
{
base.ScrollBars = RichTextBoxScrollBars.None;
} override protected CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x20;
return cp;
}
}
}
{
public TransparentRichTextBox()
{
base.ScrollBars = RichTextBoxScrollBars.None;
} override protected CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x20;
return cp;
}
}
}
解决方案 »
- 存储的是图片的路径吗?
- SqlHelper执行存储过程,报错“将参数值从 SqlParameter 转换到 String 失败”
- 进程间 SendMessage 字节数组 通信 问题
- C#里面如何同时创建大量的窗口?比如100个相同的窗口
- tabcontrol的翻页问题
- 请问有可以替代WebBrowser的控件么
- 谁能告诉我有关c#或asp.net或web service的外文文献或文章呀?
- C#:如何在picturebox中显示已捕获的视频
- C#高手请注意!请教一下怎样在一个项目里引用其它项目的函数??
- 关于 Conn.close(),分不够再加!!!
- C#如何操作环境变量中的Administrator用户变量
- 页面跳转问题
{
get
{
new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Demand();
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x20;
return cp;
}
}
{
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;
}
}
}
我win.form背景是张图片
没有透明吧
不明白你的意思图片透明?
我是希望在winform上的richtextbox能显示背景的图片
也就是Richtextbox本身透明我顶楼的代码已经实现了这个功能,但在滚动文字时文字就模糊了
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所在窗口和其它应用窗口切换一下就正常。
可能还需要你重绘一下边框。
使用win32 api
你去看看这个
你去看看这个
其实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; }
}