为了账号安全,请及时绑定邮箱和手机立即绑定

如下内容,请问我该如何彻底消除闪烁现象?

如下内容,请问我该如何彻底消除闪烁现象?

C#
qq_遁去的一_1 2022-12-17 17:13:50
现在使用splitContainer1.GetType().GetProperty("DoubleBuffered", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue(splitContainer1, true, null);splitContainer1.Panel2.GetType().GetProperty("DoubleBuffered", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue(splitContainer1.Panel2, true, null);splitContainer1.Panel1.GetType().GetProperty("DoubleBuffered", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue(splitContainer1.Panel1, true, null);  闪烁明显改善,但是还存在。尤其是拖拽中间的分割线的时候。
查看完整描述

1 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

重写一个控件继承 SplitContainer,在构造函数里加:


this.SetStyle(    ControlStyles.UserPaint |    ControlStyles.AllPaintingInWmPaint |    ControlStyles.OptimizedDoubleBuffer, true);

另外如果容器内部你还有别的容器控件(尤其是 Panel、GroupBox、甚至 PictureBox),这些子容器没启用双缓冲的话,SplitContainer 即使开了双缓冲也没用。


查看完整回答
反对 回复 2022-12-21
  • 1 回答
  • 0 关注
  • 50 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信