欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > WinForm真入门(13)——ListBox控件详解

WinForm真入门(13)——ListBox控件详解

2025/4/19 17:27:39 来源:https://blog.csdn.net/pu_yu_hun_jin/article/details/147129075  浏览:    关键词:WinForm真入门(13)——ListBox控件详解

WinForm ListBox 详解与案例


一、核心概念

‌ListBox‌ 是 Windows 窗体中用于展示可滚动列表项的控件,支持单选或多选操作,适用于需要用户从固定数据集中选择一项或多项的场景‌。

二、核心属性

属性说明
‌Items‌管理列表项的集合,支持动态增删(如 Add()、Remove())‌。
‌SelectedIndex‌获取或设置选中项的索引(未选中时为 -1)‌。
‌SelectedItem‌获取当前选中的项对象‌。
‌SelectionMode‌设置选择模式:Single(默认)、MultiSimple 或 MultiExtended‌。
‌Sorted‌是否按字母顺序自动排序项‌。
‌ScrollAlwaysVisible‌始终显示滚动条(即使内容未超出可视区域)‌。

三、核心方法与事件

1‌、常用方法‌

  • Items.Add()‌:添加新项‌。
listBox1.Items.Add("新项");

。‌Items.RemoveAt()‌:根据索引删除项‌

listBox1.Items.RemoveAt(0); // 删除第一项
  • ClearSelected()‌:取消所有选中项‌。

2‌、重要事件‌

‌SelectedIndexChanged‌:选中项变化时触发‌。

private void listBox1_SelectedIndexChanged(object sender, EventArgs e) {if (listBox1.SelectedItem != null) {MessageBox.Show($"选中项:{listBox1.SelectedItem}");}
}

四、完整案例

案例1:动态增删项
‌需求‌:通过按钮动态添加和删除列表项。
‌实现代码‌:

// 添加项
private void btnAdd_Click(object sender, EventArgs e) {listBox1.Items.Add(txtInput.Text);txtInput.Clear();
}// 删除选中项
private void btnDelete_Click(object sender, EventArgs e) {if (listBox1.SelectedIndex != -1) {listBox1.Items.RemoveAt(listBox1.SelectedIndex);}
}

‌说明‌:输入框 txtInput 用于接收用户输入,删除时需检查是否有选中项‌。


案例2:多选操作与数据绑定
‌需求‌:从数据库加载数据并支持多选。
‌实现代码‌:

// 绑定数据源(示例使用List模拟数据库数据)

private void Form1_Load(object sender, EventArgs e) {List<string> data = new List<string> { "北京", "上海", "广州", "深圳" };listBox1.DataSource = data;listBox1.SelectionMode = SelectionMode.MultiExtended; // 启用扩展多选
}// 获取所有选中项
private void btnShowSelected_Click(object sender, EventArgs e) {var selectedItems = listBox1.SelectedItems.Cast<string>().ToList();MessageBox.Show($"选中城市:{string.Join(", ", selectedItems)}");
}

‌说明‌:DataSource 属性支持绑定集合数据,SelectionMode 控制多选模式‌。


案例3:排序与批量删除
‌需求‌:自动排序列表项,并批量删除符合条件的项。
‌实现代码‌

// 启用排序
listBox1.Sorted = true;// 批量删除包含“测试”的项
private void btnBatchDelete_Click(object sender, EventArgs e) {for (int i = listBox1.Items.Count - 1; i >= 0; i--) {if (listBox1.Items[i].ToString().Contains("测试")) {listBox1.Items.RemoveAt(i); // 倒序删除避免索引错位}}
}

‌说明‌:倒序遍历避免因删除导致索引变化‌。


五、注意事项

‌性能优化‌:批量操作时使用 BeginUpdate() 和 EndUpdate() 减少界面刷新次数‌。

listBox1.BeginUpdate();
for (int i = 0; i < 1000; i++) {listBox1.Items.Add($"Item {i}");
}
listBox1.EndUpdate();

‌索引管理‌:删除多项时需倒序操作,避免索引越界‌。


总结

ListBox 是 WinForm 中灵活且功能丰富的列表控件,通过合理使用 Items 集合、SelectionMode 及事件机制,可实现动态数据管理、多选交互等复杂场景。开发时需注意性能优化和索引逻辑,避免常见错误‌

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com