C# WinForm 重绘标题栏的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# WinForm 重绘标题栏的问题相关的知识,希望对你有一定的参考价值。
问题背景:
C# vs2013 winform窗体程序
需要对在标题栏上重绘一张图片,重载了
protected override void WndProc(ref Message m)
base.WndProc(ref m);
switch (m.Msg)
//... ...
case Win32API.WM_NCPAINT:
case Win32API.WM_NCACTIVATE:
//重绘操作,在标题栏中画一张图片上去
break;
//... ...
在WndProc函数中,截获 WM_NCPAINT和WM_NCACTIVATE消息,实现标题栏的重绘。
问题:
实际运行过程中发现:
程序运行之后,并没有马上就有重绘效果。
只有当电脑桌面上的另外一个窗体覆盖了这个窗体,才能引起重绘;
而当改变窗体大小,最小化之后还原等操作之后,标题栏又会恢复的原来的样子。
问题:
这是怎么回事,怎么解决。
补充,
将重绘操作写到窗体Paint方法中即可。
for(i=0;i<9-j;i++)
改成!
for(j=0;j<10;j++)
for(i=0;i<10-j;i++)
如何改变winform(c#)标题栏的颜色
对,只有设置winform formborder为none,自己设计自己的标题栏及窗口边框或者使用API,或者第三方皮肤控件更改标题栏等样式 参考技术A winform(c#)标题栏的颜色是根据系统的配色来显示的,如果要改的话需要将原始的标题栏隐藏,然后自己写个标题栏套在窗体外面。网上能找到一些类似的例子,也有写好的配色控件。 参考技术B 隐藏窗体边框,自己写panel置顶,涉及panel颜色即可,最小化等按钮可以使用图片 参考技术C 自己写个就行了
以上是关于C# WinForm 重绘标题栏的问题的主要内容,如果未能解决你的问题,请参考以下文章