Form具有DoubleBuffered属性(布尔值,从控件继承)。
如果设置为true,是否所有放置在窗体上的控件都以双缓冲方式绘制到屏幕上?或者你需要担心他们自己的DoubleBuffered属性吗?
发布于 2009-05-26 15:58:48
据我所知,不,双缓冲不会带入子控件。您需要为每一个单独设置它。我会在谷歌上搜索一下,看看我是否能找到来源来证明/反驳这一点。
编辑:找到这个:http://www.devnewsgroups.net/group/microsoft.public.dotnet.framework.windowsforms/topic17173.aspx
只是想了一个快速的方法来解决这个问题。基本上,使用反射来获取"DoubleBuffered“属性,然后设置它:
public static class Extensions
{
public static void EnableDoubleBuferring(this Control control)
{
var property = typeof(Control).GetProperty("DoubleBuffered", BindingFlags.Instance | BindingFlags.NonPublic);
property.SetValue(control, true, null);
}
}然后,在表单代码中执行如下操作:
public Form1()
{
InitializeComponent();
this.DoubleBuffered = true;
foreach (Control control in this.Controls)
{
control.EnableDoubleBuferring();
}
}https://stackoverflow.com/questions/911376
复制相似问题