C#中如何通过点击ListBox选项,用for循环显示对应数字范围
实现两个ListBox的联动逻辑(C# WinForms)
没问题,这个需求实现起来很直观,咱们用WinForms来举例,核心就是利用SelectedIndexChanged事件配合for循环完成范围填充:
第一步:初始化第一个ListBox
首先得把1到14的数字先放进第一个ListBox里,你可以在窗体加载事件里完成这一步:
private void Form1_Load(object sender, EventArgs e) { // 给第一个ListBox(假设叫listBox_Days)添加1-14的选项 for (int i = 1; i <= 14; i++) { listBox_Days.Items.Add(i.ToString()); } }
第二步:处理第一个ListBox的点击事件
接下来给第一个ListBox绑定SelectedIndexChanged事件,当用户选中某个选项时,触发逻辑填充第二个ListBox(假设叫listBox_Range):
private void listBox_Days_SelectedIndexChanged(object sender, EventArgs e) { // 先清空第二个ListBox,避免重复添加 listBox_Range.Items.Clear(); // 判断是否有选中项,防止空引用 if (listBox_Days.SelectedItem == null) return; // 将选中的项转换为整数,用TryParse避免转换失败报错 if (int.TryParse(listBox_Days.SelectedItem.ToString(), out int selectedDay)) { // 核心逻辑:用for循环生成1到selectedDay的范围,添加到第二个ListBox for (int i = 1; i <= selectedDay; i++) { listBox_Range.Items.Add(i.ToString()); } } }
关键逻辑说明
- 每次触发事件先清空第二个ListBox,确保新内容不会和旧内容混在一起;
- 用
int.TryParse做类型转换更安全,能避免意外情况导致的程序崩溃; - for循环的起始值设为1,终止条件用
i <= selectedDay,这样就能完整覆盖从1到选中数字的所有整数——比如选中7的话,循环会执行7次,依次把1、2……7添加到第二个ListBox里。
如果是WPF环境,ListBox的项操作方式略有不同,但核心的for循环逻辑是完全一致的哦。
内容的提问来源于stack exchange,提问作者Sang Nguyen
相关产品推荐
相关产品推荐

