社区
C#
帖子详情
winform 控件重绘 refresh
混QWER
2017-09-07 03:27:04
有一个panel1中包含 有panel2,如果panel 1或panel2其中任意一个refresh,两个panel都会调用paint方法。有没有可能panel1重绘不会影响到panel2
...全文
170
4
打赏
收藏
winform 控件重绘 refresh
有一个panel1中包含 有panel2,如果panel 1或panel2其中任意一个refresh,两个panel都会调用paint方法。有没有可能panel1重绘不会影响到panel2
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mk_lucifer
2017-09-07
打赏
举报
回复
重绘时时刻刻都在发生,他的原理是,系统向窗口发送 WM_PAINT消息,即使你调用Refresh,他也是间接调用系统API , InvalidateRect或者Invalidate,具体谁重绘,谁不重绘,C#说的不算, windows说的算,太会根据无效区域的位置来决定windows系统下所有窗口,是否由需要重绘的,有就发送WM_PAINT消息,老老实实重绘你的图形,就和程序卡死一样(程序卡死是不会重绘的),APP卡死在旧版windows系统下,啥奇葩都有,一小片黑,重影,各种情况,都是因为决绝重绘造成的。。。
mk_lucifer
2017-09-07
打赏
举报
回复
可以,你可以在Panel2里禁止函数执行,但问题是将你看不到panel2。。 这就是个擦黑板的问题, 黑板擦了,把Panel1画上了,但不画Panel2,你就没有Panel2, 这不只是父子关系的问题,还有遮挡关系,如果它上面有个其他无关的窗口甚至是另一个程序的窗口和Panel1重叠,都有可能导致这个窗口必须重绘。。 总之,重绘是必须的,你可以决定,但操作系统也决定这个行为,让你重绘那是必须的,因为不重绘就没有图形了。。
混QWER
2017-09-07
打赏
举报
回复
引用 1 楼 Libby1984 的回复:
不可能的。包含关系,两个都会Paint。
如果两个不是包含关系,而是一个在一个上面,上面那个panel就算是透明的也会挡住下面那个panel绘出的图形。 这种应该怎么办呢。
Milo米啊米啊米
2017-09-07
打赏
举报
回复
不可能的。包含关系,两个都会Paint。
关于
winform
的
重绘
一个是 系统来确定 这个
控件
需要绘制 比如 最小化后在最大化 那么此时 系统会发出WM_PAINT 消息来告知
控件
你需要
重绘
了 另一个就是 人为的调用this.Invalidate()或者this.Invalidate(Rectangle)来自己触发一次
重绘
...
C#
Winform
重绘
按钮
重新绘制
winform
按钮
Form.
Refresh
() 强制
重绘
winform
解决窗体的
控件
未完全加载就可以执行其他可能阻塞
控件
加载的线程
控件
初始化后调用this.
Refresh
()即可 转载于:https://www.cnblogs.com/onestow/p/5952838.html...
winform
DataGridView
重绘
滚动条
在 Windows Forms DataGridView 中,可以使用 "Invalidate()" 方法
重绘
滚动条。例如: dataGridView1.Invalidate();...如果需要
重绘
整个 DataGridView,可以使用“
Refresh
()”方法。 dataGridView1.
Refresh
(); ...
通过调用 Windows API 禁止
控件
的
重绘
,减少闪烁
在编程工作中,我们会经常遇到,频繁地设置某些
控件
的属性,由于每次属性变化都会引发
控件
的
重绘
,导致屏幕闪烁,影响用户体验,此时,我们可以暂时禁止
控件
重绘
,把所有的设置完成后,再重新允许
重绘
。 [DllImport...
C#
110,561
社区成员
642,566
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章