DoubleBuffered 与 SetStyle
DoubleBuffered versus SetStyle
我得到了相互矛盾的 Google 结果,我想知道是否可以澄清一下?
我有:
typeof(TableLayoutPanel)
.GetProperty("DoubleBuffered",
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)
.SetValue(tableLayoutPanel, true, null);
typeof(TableLayoutPanel)
.GetMethod("SetStyle",
System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic)
.Invoke(tableLayoutPanel, new object[] { ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true });
但有人告诉我,如果我将 DoubleBuffered 设置为 true,我就不需要手动将 3 种样式设置为系统将在内部执行此操作。目前我正在打电话。
来自 Reference Source 这里是 DoubleBuffered
属性 的实现:
protected virtual bool DoubleBuffered {
get {
return GetStyle(ControlStyles.OptimizedDoubleBuffer);
}
set {
if (value != DoubleBuffered) {
if (value) {
SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, value);
}
else {
SetStyle(ControlStyles.OptimizedDoubleBuffer, value);
}
}
}
}
(注意属性是继承的,所以要回到Control
class才能找到。)
我得到了相互矛盾的 Google 结果,我想知道是否可以澄清一下?
我有:
typeof(TableLayoutPanel)
.GetProperty("DoubleBuffered",
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)
.SetValue(tableLayoutPanel, true, null);
typeof(TableLayoutPanel)
.GetMethod("SetStyle",
System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic)
.Invoke(tableLayoutPanel, new object[] { ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true });
但有人告诉我,如果我将 DoubleBuffered 设置为 true,我就不需要手动将 3 种样式设置为系统将在内部执行此操作。目前我正在打电话。
来自 Reference Source 这里是 DoubleBuffered
属性 的实现:
protected virtual bool DoubleBuffered {
get {
return GetStyle(ControlStyles.OptimizedDoubleBuffer);
}
set {
if (value != DoubleBuffered) {
if (value) {
SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, value);
}
else {
SetStyle(ControlStyles.OptimizedDoubleBuffer, value);
}
}
}
}
(注意属性是继承的,所以要回到Control
class才能找到。)