最近在做一个winform项目,其中一个panel内的全部控件都是动态添加到页面中的,并且这些动态的控件需要做添加、删除等的功能,考虑到界面的美观,在每添加或删除时都要重新加载所有动态控件,但是,有一个问题就是清空控件再添加时页面会闪屏,这个问题很影响人机交互的效果,最后通过一个大佬了解到了“双缓冲”技术,在大佬给的示例中我稍微修改了一下,现在分享给大家:
1、首先我重写了panel控件,项目(右键)–>添加新项–>自定义控件
2、添加如下代码:
public partial class Mypanel : Panel
{
public Mypanel()
{
InitializeComponent();
//panel双缓冲
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
this.SetStyle(ControlStyles.UserPaint, true);
}
protected override void OnPaint(PaintEventArgs pe)
{
base.OnPaint(pe);
}
}
3、在使用双缓冲的窗体Load事件中添加如下代码:
//窗体双缓冲
this.DoubleBuffered = true;
这样,重新加载Mypanel中控件时,就可以防止闪屏了!!!良心推荐