Form
DoubleBuffered プロパティ (bool、Control から継承) があります。
これが true に設定されている場合、すべてのコントロールは、フォーム上にあるという理由で、ダブル バッファ方式で画面に描画されるフォームに配置されますか? それとも、独自の DoubleBuffered プロパティについて心配する必要がありますか?
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);
}
}
次に、フォーム コードで次のようにします。
public Form1()
{
InitializeComponent();
this.DoubleBuffered = true;
foreach (Control control in this.Controls)
{
control.EnableDoubleBuferring();
}
}