Windows Forms C# 如何删除ListView内容并保留列头框架
解决方案
你调用的ListView.Clear()方法属于控件级的全局清空API,执行时会同时删除列头、所有列表项、分组配置等全部控件内容,和你只删除数据行的需求不匹配。
修正方法
把代码中对Clear()的调用,替换为针对列表项集合的清空操作Items.Clear()即可,该方法只会删除展示的行数据,完全保留列头、列宽、排序规则等框架配置。
修正后完整代码
private void button2_Click_1(object sender, EventArgs e) { Action<Control.ControlCollection> func = null; func = (controls) => { foreach (Control control in controls) if (control is ListView listView) listView.Items.Clear(); else func(control.Controls); }; func(Controls); }
可选优化点
- 如果你使用的是较老版本的C#不支持模式匹配语法,直接把对应行改回
(control as ListView).Items.Clear()即可正常运行 - 如果你当前界面只有一个固定ID的ListView需要操作,不需要递归遍历所有控件查找,直接调用对应控件ID的
Items.Clear()性能更好、逻辑更简单
内容的提问来源于stack exchange,提问作者LFLJM
相关产品推荐
相关产品推荐

