Winform如何获取多个combobox的选中值并相加

iAm_Ike 2016-10-18 01:33:56
有五个combobox,想添加一个button的单击事件对五个combobox的当前值进行相加计算,请问如何实现?
...全文
316 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
iAm_Ike 2016-10-18
  • 打赏
  • 举报
回复
引用 12 楼 stherix 的回复:
[quote=引用 11 楼 xz_ike 的回复:] [quote=引用 7 楼 stherix 的回复:] 要想循环的话 这些combobox必须先全部放入一个List或者一个UI容器 List的话就简单了 ,遍历然后累加就行 容器的话 for 控件 in 容器 { if 控件 is combobox && 需要累加(控件.tag ) 累加(控件.Text) }
如果我将所有的combobox放进一个panel里,怎么遍历拿到每个combobox的选中值呢?[/quote] int Sum=0; for(int i=0;i<panel1.Controls.Count;i++) { if( panel1.Controls[i] is ComboBox) Sum+=int.Parse(panel1.Controls[i].Text);//这里未作数字合法性检查 } [/quote]需要get一下异常,也可以用int.TryParse(panel1.Controls[i].Text,out temp),来存放
iAm_Ike 2016-10-18
  • 打赏
  • 举报
回复
谢谢大家,结贴了。 12楼和14楼的方法都可以解决,其他方法我没有尝试。
喵-小黑 2016-10-18
  • 打赏
  • 举报
回复
引用 4 楼 xz_ike 的回复:
[quote=引用 2 楼 dan19908 的回复:]
 
   private void button1_Click(object sender, EventArgs e)
        {
            int count = Convert.ToInt32(comboBox1.SelectedItem) + Convert.ToInt32(comboBox2.SelectedItem)
                 +Convert.ToInt32(comboBox3.SelectedItem)+Convert.ToInt32(comboBox4.SelectedItem)
                 +Convert.ToInt32(comboBox5.SelectedItem);
        }
我想放在循环里做,因为后面可能还有更多的combobox怎么做?[/quote]

 int count;
        private void button1_Click(object sender, EventArgs e)
        {
            count = 0;
            foreach (Control ctrl in panel1.Controls)
            {
                if (ctrl is ComboBox)
                {
                    ComboBox cmb = ctrl  as ComboBox;
                    count = Convert.ToInt32(cmb.SelectedItem) + count;

                }
            }
            MessageBox.Show(count.ToString());
        }
喵-小黑 2016-10-18
  • 打赏
  • 举报
回复
引用 10 楼 mjp1234airen4385 的回复:
把所有下拉框都用统一的命名规则,比如:cob1,cob2,cob3....,并且都放到一个panel或者groupbox里, 使用查找控件的方法,findCotrol(“cob1”),就可以找到控件了。让后转换成combobox类型,取值相加

        int count;
        private void button1_Click(object sender, EventArgs e)
        {
            count = 0;
            foreach (Control ctrl in panel1.Controls)
            {
                if (ctrl is ComboBox)
                {
                    ComboBox cmb = ctrl  as ComboBox;
                    count = Convert.ToInt32(cmb.SelectedItem) + count;

                }
            }
            MessageBox.Show(count.ToString());
        }
stherix 2016-10-18
  • 打赏
  • 举报
回复
引用 11 楼 xz_ike 的回复:
[quote=引用 7 楼 stherix 的回复:] 要想循环的话 这些combobox必须先全部放入一个List或者一个UI容器 List的话就简单了 ,遍历然后累加就行 容器的话 for 控件 in 容器 { if 控件 is combobox && 需要累加(控件.tag ) 累加(控件.Text) }
如果我将所有的combobox放进一个panel里,怎么遍历拿到每个combobox的选中值呢?[/quote] int Sum=0; for(int i=0;i<panel1.Controls.Count;i++) { if( panel1.Controls[i] is ComboBox) Sum+=int.Parse(panel1.Controls[i].Text);//这里未作数字合法性检查 }
iAm_Ike 2016-10-18
  • 打赏
  • 举报
回复
引用 7 楼 stherix 的回复:
要想循环的话 这些combobox必须先全部放入一个List或者一个UI容器 List的话就简单了 ,遍历然后累加就行 容器的话 for 控件 in 容器 { if 控件 is combobox && 需要累加(控件.tag ) 累加(控件.Text) }
如果我将所有的combobox放进一个panel里,怎么遍历拿到每个combobox的选中值呢?
mjp1234airen4385 2016-10-18
  • 打赏
  • 举报
回复
把所有下拉框都用统一的命名规则,比如:cob1,cob2,cob3....,并且都放到一个panel或者groupbox里, 使用查找控件的方法,findCotrol(“cob1”),就可以找到控件了。让后转换成combobox类型,取值相加
iAm_Ike 2016-10-18
  • 打赏
  • 举报
回复
引用 8 楼 FoxDave 的回复:
引用 6 楼 xz_ike 的回复:
[quote=引用 1 楼 FoxDave 的回复:] 直接后台取就行了啊
想用循环做。。因为后面还会有更多的combobox。。
从parentcontrol循环[/quote]可以说清楚一点吗
Justin-Liu 2016-10-18
  • 打赏
  • 举报
回复
引用 6 楼 xz_ike 的回复:
引用 1 楼 FoxDave 的回复:
直接后台取就行了啊
想用循环做。。因为后面还会有更多的combobox。。
从parentcontrol循环
stherix 2016-10-18
  • 打赏
  • 举报
回复
要想循环的话 这些combobox必须先全部放入一个List或者一个UI容器 List的话就简单了 ,遍历然后累加就行 容器的话 for 控件 in 容器 { if 控件 is combobox && 需要累加(控件.tag ) 累加(控件.Text) }
iAm_Ike 2016-10-18
  • 打赏
  • 举报
回复
引用 1 楼 FoxDave 的回复:
直接后台取就行了啊
想用循环做。。因为后面还会有更多的combobox。。
iAm_Ike 2016-10-18
  • 打赏
  • 举报
回复
引用 3 楼 u011981242 的回复:
先将为空、不为数字的算做0,然后相加得出结果
		private void button1_Click(object sender, EventArgs e)
        {
			double sum =
            string.IsNullOrEmpty(comboBox1.Text.Trim()) && !double.TryParse(comboBox1.Text.Trim(), out ios) ? 0 : Convert.ToDouble(comboBox1.Text)+
			string.IsNullOrEmpty(comboBox2.Text.Trim()) && !double.TryParse(comboBox2.Text.Trim(), out ios) ? 0 : Convert.ToDouble(comboBox2.Text)+
			string.IsNullOrEmpty(comboBox3.Text.Trim()) && !double.TryParse(comboBox3.Text.Trim(), out ios) ? 0 : Convert.ToDouble(comboBox3.Text)+
			string.IsNullOrEmpty(comboBox4.Text.Trim()) && !double.TryParse(comboBox4.Text.Trim(), out ios) ? 0 : Convert.ToDouble(comboBox4.Text)+
			string.IsNullOrEmpty(comboBox5.Text.Trim()) && !double.TryParse(comboBox5.Text.Trim(), out ios) ? 0 : Convert.ToDouble(comboBox5.Text);
		}
用循环怎么做呢?
iAm_Ike 2016-10-18
  • 打赏
  • 举报
回复
引用 2 楼 dan19908 的回复:
 
   private void button1_Click(object sender, EventArgs e)
        {
            int count = Convert.ToInt32(comboBox1.SelectedItem) + Convert.ToInt32(comboBox2.SelectedItem)
                 +Convert.ToInt32(comboBox3.SelectedItem)+Convert.ToInt32(comboBox4.SelectedItem)
                 +Convert.ToInt32(comboBox5.SelectedItem);
        }
我想放在循环里做,因为后面可能还有更多的combobox怎么做?
  • 打赏
  • 举报
回复
先将为空、不为数字的算做0,然后相加得出结果
		private void button1_Click(object sender, EventArgs e)
        {
			double sum =
            string.IsNullOrEmpty(comboBox1.Text.Trim()) && !double.TryParse(comboBox1.Text.Trim(), out ios) ? 0 : Convert.ToDouble(comboBox1.Text)+
			string.IsNullOrEmpty(comboBox2.Text.Trim()) && !double.TryParse(comboBox2.Text.Trim(), out ios) ? 0 : Convert.ToDouble(comboBox2.Text)+
			string.IsNullOrEmpty(comboBox3.Text.Trim()) && !double.TryParse(comboBox3.Text.Trim(), out ios) ? 0 : Convert.ToDouble(comboBox3.Text)+
			string.IsNullOrEmpty(comboBox4.Text.Trim()) && !double.TryParse(comboBox4.Text.Trim(), out ios) ? 0 : Convert.ToDouble(comboBox4.Text)+
			string.IsNullOrEmpty(comboBox5.Text.Trim()) && !double.TryParse(comboBox5.Text.Trim(), out ios) ? 0 : Convert.ToDouble(comboBox5.Text);
		}
喵-小黑 2016-10-18
  • 打赏
  • 举报
回复
 
   private void button1_Click(object sender, EventArgs e)
        {
            int count = Convert.ToInt32(comboBox1.SelectedItem) + Convert.ToInt32(comboBox2.SelectedItem)
                 +Convert.ToInt32(comboBox3.SelectedItem)+Convert.ToInt32(comboBox4.SelectedItem)
                 +Convert.ToInt32(comboBox5.SelectedItem);
        }
Justin-Liu 2016-10-18
  • 打赏
  • 举报
回复
直接后台取就行了啊

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧