许多 Windows 窗体控件(例如,ListView 和 TreeView 控件)实现了 BeginUpdate 和EndUpdate 方法,它们在操纵基础数据或控件属性时取消了控件的重新绘制。通过使用BeginUpdate 和 EndUpdate 方法,您可以对控件进行重大更改,并且避免在应用这些更改时让控件经常重新绘制自身。此类重新绘制会导致性能显著降低,并且用户界面闪烁且不反应。例如,如果您的应用程序具有一个要求添加大量节点项的树控件,则您应该调用 BeginUpdate,添加所有必需的节点项,然后调用 EndUpdate。下面的代码示例显示了一个树控件,该控件用于显示许多个客户的层次结构表示形式及其定单信息。
[C#]
// Suppress repainting the TreeView until all the objects have been created.
TreeView1.BeginUpdate();
// Clear the TreeView.
TreeView1.Nodes.Clear();
// Add a root TreeNode for each Customer object in the ArrayList.
foreach( Customer customer2 in customerArray ) {
TreeView1.Nodes.Add( new TreeNode( customer2.CustomerName ) );
// Add a child TreeNode for each Order object in the current Customer.
foreach( Order order1 in customer2.CustomerOrders ) {
TreeView1.Nodes[ customerArray.IndexOf(customer2) ].Nodes.Add(
new TreeNode( customer2.CustomerName + "." + order1.OrderID ) );
}
}
// Begin repainti

文章介绍了在Windows窗体开发中,如何使用BeginUpdate和EndUpdate方法来避免控件如ListView和TreeView在大量数据更新时频繁重绘,从而提高性能并减少用户界面的闪烁。在添加或修改大量节点时,先调用BeginUpdate,然后进行操作,最后调用EndUpdate,可以显著改善用户体验。这种方法适用于处理不确定数量的数据项,并且AddRange方法也会自动处理BeginUpdate和EndUpdate。
最低0.47元/天 解锁文章
1885

被折叠的 条评论
为什么被折叠?



