我正在制作一个程序来学习如何在Button_Click事件的循环内动态生成控件,现在我正在尝试计算两个字段的乘法及其在第三个TextBox中的输出
代码:
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
unit.Location = new System.Drawing.Point(unitstartposition, unitstartpositionV);
unit.Size = new System.Drawing.Size(100, 30);
unit.Text = "";
unit.Name = "unit" + i.ToString();
rate.Location = new System.Drawing.Point(ratestartposition, ratestartpositionV);
unit.Size = new System.Drawing.Size(100, 30);
rate.Text = "";
rate.Name = "rate" + i.ToString();
amt.Location = new System.Drawing.Point(amtstartposition, amtstartpositionV);
amt.Size = new System.Drawing.Size(100, 30);
amt.Text = "";
amt.Name = "amt" + i.ToString();
panel1.Controls.Add(unit);
panel1.Controls.Add(rate);
panel1.Controls.Add(amt);
unitstartpositionV += 30;
ratestartpositionV += 30;
amtstartpositionV += 30;
unit = new TextBox();
rate = new TextBox();
amt = new TextBox();
}
现在我想像
一样计算它amt0.Text = (ConvertToInt32(unit0.Text) * ConvertToInt32(rate0.Text)).ToString();
amt1.Text = (ConvertToInt32(unit1.Text) * ConvertToInt32(rate1.Text)).ToString();
等等
最后我想总结所有的amt(i)。请帮助实现这一目标。
答案 0 :(得分:0)
从'unitstartpositionV + = 30;'行开始以后,这就是我想出来解决这个问题的方法:
unitstartpositionV += 30;
ratestartpositionV += 30;
amtstartpositionV += 30;
unit = new TextBox();
rate = new TextBox();
amt = new TextBox();
unit.Tag = rate;
rate.Tag = amt;
amt.Tag = unit;
rate.TextChanged += rate_TextChanged;
unit.TextChanged += unit_TextChanged;
}
}
private void rate_TextChanged(object sender, EventArgs e)
{
var rate = sender as TextBox;
var amt = rate.Tag as TextBox;
var unit = amt.Tag as TextBox;
Calc(rate.Text, unit.Text, amt);
}
private void unit_TextChanged(object sender, EventArgs e)
{
var unit = sender as TextBox;
var rate = unit.Tag as TextBox;
var amt = rate.Tag as TextBox;
Calc(rate.Text, unit.Text, amt);
}
private void Calc(string rate, string unit, TextBox amt)
{
int rateInt;
if (!int.TryParse(rate, out rateInt)) return;
int unitInt;
if (!int.TryParse(unit, out unitInt)) return;
amt.Text = (rateInt * unitInt).ToString();
}
(它不包括所有的总和)
我已经以一种不同寻常的方式解决了这个问题,以适应你所展示的风格。但实际上你应该使用数组,列表或某种“集合”来保存你的控件。从回顾你的其他答案,我不认为你已经了解IEnumerable。这就是你所缺少的概念,它会使这种活动变得更加简单(特别是'总和'要求)。