C# WinForms中ListView控件实现数据增删的完整实例
C#中的ListView控件广泛用于展示结构化数据。在实际开发中,经常需要支持用户动态添加新记录或移除无效数据。本文将解析如何在Windows Forms界面中,通过代码实现对ListView的增删操作,包括处理多列数据显示及选中状态判断。
应用场景与目标
在使用C#开发桌面应用程序时,ListView控件常用于显示包含多个字段的数据集合。本例的核心目标是解决两个基本交互问题:
- 动态添加:点击按钮后,将当前数据作为新行插入到ListView末尾。
- 安全删除:识别用户当前选中的项,并将其从列表中移除,同时保证程序不会因索引越界而崩溃。
准备条件
为了运行以下代码,你需要一个标准的Windows Forms项目,并满足以下条件:
- 在窗体上放置一个
ListView控件,确保其名称为listView1(或在代码中同步修改变量名)。 - 配置
ListView的视图属性,通常设置为List或Details模式以支持多列显示。 - 如果涉及多列数据展示,建议先在设计器中设置好
Columns,或在代码初始化时手动添加列头。 - 添加两个
Button控件:
- “增加”按钮,名称建议为addButton。
- “删除”按钮,名称建议为delButton。 - 声明一个整型变量用于模拟数据生成,例如:private int coutNumber = 0;。
具体操作实现
第1步:实现数据添加功能
该步骤旨在通过触发事件,将动态生成的字符串数组转换为 ListViewItem 对象,并追加至列表末尾。此操作适用于表单填写提交或新增数据录入场景。
private void addButton_Click(object sender, EventArgs e)
{
// 获取第一列显示的文本数据
string item1Str = coutNumber.ToString();
// 获取第二列显示的文本数据
string item2Str = coutNumber.ToString();
// 创建新的 ListViewItem 实例,包含上述两列数据
this.listView1.Items.Add(new ListViewItem(new string[] { item1Str, item2Str }));
// 递增计数器,确保下一次添加的数据不重复
coutNumber++;
}
第2步:实现数据安全删除功能
删除操作相对复杂,因为直接遍历正在修改的集合可能会导致异常。下方的代码演示了如何通过检查选中状态和聚焦项来定位要删除的行,这是防止“索引超出范围”错误的常用做法。
private void delButton_Click(object sender, EventArgs e)
{
// 遍历所有项以查找被选中的项
foreach (ListViewItem item in listView1.Items)
{
// 判断当前项是否被选中
if (listView1.SelectedItems.Contains(item))
{
// 获取当前聚焦项在整个列表中的物理索引
int indexDel = listView1.Items.IndexOf(listView1.FocusedItem);
// 再次确认存在有效选中项后执行删除
if (listView1.SelectedItems.Count != 0)
{
// 根据索引移除对应的项
listView1.Items.RemoveAt(indexDel);
}
}
}
}
完成判断与排错
代码编写完成后,可通过以下步骤验证功能:
- 运行测试:启动调试模式,观察点击“增加”按钮时,列表是否按顺序逐行刷新。
- 选中验证:手动点击列表中的任意一行使其高亮(选中),然后按下“删除”键。确认后,该行应当消失,且后续行的序号保持逻辑正确。
- 边界处理:当列表为空时点击“删除”,由于
SelectedItems为空,程序应正常退出循环而不报错;若未做此防护,可能会抛出NullReferenceException。
以上便是关于在C#中使用ListView控件进行增删操作的详细内容。该方法提供了最基础的交互范式,实际项目中可根据需求结合数据库或内存模型进行扩展。更多关于C#图形界面开发的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













