Tablayout 面板加载时间过长
Tablayout panel taking too long time to load
我有下面的表格,其中我在 Tablayout 面板中有几个控件,如图所示。
加载此表单时花费的时间太长(而且还闪烁)。
我试过了:
我 select CellBorderStyle 作为 'None' 所以,那一刻我没有观察到这个问题,但是当我选择除 'None' 之外的任何 cellBorder 样式时它出现了。
PS;我在加载表单时没有执行任何操作。只是试图加载初始表单。
尝试使用 DoubleBuffered 属性 以避免闪烁。您必须从 TableLayoutPanel 创建一个子类以将 DoubleBuffered 属性 设置为 true。
以下是 Tor 建议的完整答案。
public static void SetDoubleBuffered(System.Windows.Forms.Control c)
{
if (System.Windows.Forms.SystemInformation.TerminalServerSession)
return;
System.Reflection.PropertyInfo aProp =
typeof(System.Windows.Forms.Control).GetProperty(
"DoubleBuffered",
System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.Instance);
aProp.SetValue(c, true, null);
}
我从构造函数调用了 upperfunction
SetDoubleBuffered("tablayoutPanelName");
我有下面的表格,其中我在 Tablayout 面板中有几个控件,如图所示。
加载此表单时花费的时间太长(而且还闪烁)。
我试过了: 我 select CellBorderStyle 作为 'None' 所以,那一刻我没有观察到这个问题,但是当我选择除 'None' 之外的任何 cellBorder 样式时它出现了。
PS;我在加载表单时没有执行任何操作。只是试图加载初始表单。
尝试使用 DoubleBuffered 属性 以避免闪烁。您必须从 TableLayoutPanel 创建一个子类以将 DoubleBuffered 属性 设置为 true。
以下是 Tor 建议的完整答案。
public static void SetDoubleBuffered(System.Windows.Forms.Control c)
{
if (System.Windows.Forms.SystemInformation.TerminalServerSession)
return;
System.Reflection.PropertyInfo aProp =
typeof(System.Windows.Forms.Control).GetProperty(
"DoubleBuffered",
System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.Instance);
aProp.SetValue(c, true, null);
}
我从构造函数调用了 upperfunction
SetDoubleBuffered("tablayoutPanelName");