当前位置:编程学习 > C#/ASP.NET >>

C#多个label内的数值求和怎么实现?

每个label的数值都根据按钮的变动而变动,而且每按一次计算总和的label也跟着变动请问有什么简单代码可以实现?有80多个label,而且每个label有4个按钮控制数值。要一个个加的话感觉不太科学啊,小弟新手求大大支招 多个数值求和 --------------------编程问答-------------------- int result=80个label的父控件.Controls.OfType<Label>().AsEnumerable().Sum(p=>Int32.Parse(p.Text)); --------------------编程问答-------------------- 如果按钮和lable有关联的话,你必须建立关联,比如设置按钮的tag属性为lable,点击按钮时,将tag转为lable即可访问那个label对象了 --------------------编程问答-------------------- label.text显示的是当前,你需要写一个求和函数,每次最后调用这个函数不就好了吗? --------------------编程问答--------------------
引用 1 楼 sj490790083 的回复:
int result=80个label的父控件.Controls.OfType<Label>().AsEnumerable().Sum(p=>Int32.Parse(p.Text));

我窗体里不是全部label都是数字啊,有些是文字的...... --------------------编程问答-------------------- 用一个全局变量保存80个label的和(假设为iTotal)。
窗体控件加载后,先计算一下80个label的和,将和保存到iTotal(初始化),每次点击和80个label相关的按钮时要重新计算和。

计算方法:
iTotal += label新值-  label新值旧值。

按钮点击事件伪代码:
int iOld = Convert.ToInt32(label.Text);
label.Text = "新值";
int iNew = Convert.ToInt32(label.Text);
iTotal += iNew - iOld ;
--------------------编程问答-------------------- 修改一下,定义个整数i,result就是所有文本是整数的Label的文本的和

   int i = 0;
            int result=this.Controls.OfType<Label>().AsEnumerable().Where(p => (Int32.TryParse
                (p.Text, out i)) == true).Sum(p1 => Int32.Parse(p1.Text));
--------------------编程问答-------------------- 这个用Linq实现起来是很容易的。


var result = Controls.OfType<Label>().Sum(lbl => Int32.Parse(lbl.Text));


result 就是最后的结果了。 --------------------编程问答--------------------
引用 6 楼 sj490790083 的回复:
修改一下,定义个整数i,result就是所有文本是整数的Label的文本的和

   int i = 0;
            int result=this.Controls.OfType<Label>().AsEnumerable().Where(p => (Int32.TryParse
                (p.Text, out i)) == true).Sum(p1 => Int32.Parse(p1.Text));


这个比我的更好。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,