xyz*_*xyz 5 .net c# doublebuffered winforms
Form 具有DoubleBuffered属性(bool,继承自Control).
如果将此设置为true,那么由于在表单上,是否所有控件都以双缓冲方式放置在屏幕上?或者您是否需要担心自己的DoubleBuffered属性?
从我记忆中看,不,双缓冲不会延续到儿童控制.您需要为每个单独设置它.我会谷歌它,看看我是否能找到证明/反驳这一点的来源......
编辑:发现这个: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);
}
}
Run Code Online (Sandbox Code Playgroud)
然后,在您的表单代码中,执行以下操作:
public Form1()
{
InitializeComponent();
this.DoubleBuffered = true;
foreach (Control control in this.Controls)
{
control.EnableDoubleBuferring();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2829 次 |
| 最近记录: |