ListView控件演示03:如何在列表添加项的时候减少UI的刷新

本文演示了如何在Windows应用程序中初始化ListView控件并包含复选框,通过使用BeginUpdate和EndUpdate方法来减少UI重绘次数,提升用户体验。介绍了设置ListView属性,如背景色、多选功能和显示复选框的方法,并展示了如何在循环中高效地添加列表项,避免频繁重绘导致的性能损耗。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码示例演示如何初始化ListView控件以包含复选框。它还阐释了如何使用BeginUpdate和EndUpdate方法。
通过对BeginUpdate和EndUpdate方法的使用,可以减少在为列表添加项时UI的重绘次数。如果不使用这2个方法,则每向ListView添加一个列表项时,都会重绘ListView控件。

程序截图

程序代码

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Demo03 { public partial class MainForm : Form { ListView listView; public MainForm() { InitializeComponent(); this.InitializeListView(); } private void InitializeListView() { this.listView = new System.Windows.Forms.ListView(); // Set properties such as BackColor and DockStyle and Location. this.listView.BackColor = System.Drawing.SystemColors.Control; this.listView.Dock = System.Windows.Forms.DockStyle.Top; this.listView.Location = new System.Drawing.Point(0, 0); this.listView.Size = new System.Drawing.Size(292, 130); this.listView.View = System.Windows.Forms.View.Details; this.listView.HideSelection = false; // Allow the user to select multiple items. this.listView.MultiSelect = true; // Show CheckBoxes in the ListView. this.listView.CheckBoxes = true; //Set the column headers and populate the columns. listView.HeaderStyle = ColumnHeaderStyle.Nonclickable; ColumnHeader columnHeader1 = new ColumnHeader(); columnHeader1.Text = "Breakfast Choices"; columnHeader1.TextAlign = HorizontalAlignment.Left; columnHeader1.Width = 146; ColumnHeader columnHeader2 = new ColumnHeader(); columnHeader2.Text = "Price Each"; columnHeader2.TextAlign = HorizontalAlignment.Center; columnHeader2.Width = 142; this.listView.Columns.Add(columnHeader1); this.listView.Columns.Add(columnHeader2); string[] foodList = new string[]{"Juice", "Coffee", "Cereal & Milk", "Fruit Plate", "Toast & Jelly", "Bagel & Cream Cheese"}; string[] foodPrice = new string[]{"1.09", "1.09", "2.19", "2.79", "2.09", "2.69"}; int count; // Members are added one at a time, so call BeginUpdate to ensure // the list is painted only once, rather than as each list item is added. // 一旦调用了BeginUpdate()这个方法,要直到调用EndUpdate()方法时才会重新绘制ListView。 // 因此下面连续添加了几个ListViewItem都不会重新绘制ListView。 listView.BeginUpdate(); for (count = 0; count < foodList.Length; count++) { ListViewItem listItem = new ListViewItem(foodList[count]); listItem.SubItems.Add(foodPrice[count]); listView.Items.Add(listItem); } //Call EndUpdate when you finish adding items to the ListView. // 调用这个方法就会重新绘制ListView了,这是会把前面添加的所有ListViewItem绘制到控件上。 listView.EndUpdate(); this.Controls.Add(this.listView); } } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值