Form
具有 DoubleBuffered 属性(布尔值,继承自 Control)。
如果将此设置为 true,则放置在窗体上的所有控件是否都会由于位于窗体上而以双缓冲方式绘制到屏幕上?或者您需要担心它们自己的 DoubleBuffered 属性吗?
据我所知,不,双缓冲不会延续到子控件。您需要为每一项单独设置。我会用谷歌搜索一下,看看是否能找到来源来证明/反驳这一点......
编辑:发现这个:http://www.devnewsgroups.net/group/microsoft.public.dotnet.framework.windowsforms/topic17173.aspx 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();
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)