我用20个文本框创建计算器 - 输入10个,输出10个。在创建了一个放入参数的方法(在前10个文本框中定义)之后,我将值返回给main方法。
要获取所有10个值,是否真的有必要为我已经开始的所有10个或更多文本框编写代码,或者有更聪明的方法如何传入方法文本框参数并一次返回多个值?
更新:
当你推荐我创建了元组列表并使用foreach循环来循环它们,但现在我得到错误: 错误1无法隐式转换类型' int'到'字符串'。你能帮我指出问题出在哪里吗?
private void button1_Click(object sender,EventArgs e)
{
List<Tuple<TextBox,TextBox>> tuple1 = new List<Tuple<TextBox,TextBox>>();
tuple1.Add(Tuple.Create(textBox1, textBox2));
tuple1.Add(Tuple.Create(textBox3, textBox4));
tuple1.Add(Tuple.Create(textBox5, textBox6));
tuple1.Add(Tuple.Create(textBox7, textBox8));
foreach (Tuple<TextBox,TextBox> box in tuple1)
{
var inputBox = box.Item1;
var outputBox = box.Item2;
outputBox.Text = MethodA(Convert.ToInt32(inputBox.Text));
}
}
private int MethodA(int Parameter1)
{
int A = Parameter1;
int B = 20;
int C;
if (A == 16 && B == 20) { C = 15; } else if (A == 20 && B == 20) { C = 25; } else { C = 0; };
return C;
}
答案 0 :(得分:0)
您可以将所有输入输出文本框组合存储在构造函数中:
private List<Tuple<TextBox, TextBox>> textBoxes = new List<Tuple<TextBox, TextBox>>();
public Form1() {
InitializeComponents();
textBoxes.add(Tuple.Create(textBox1, textBox4);
// ...
}
然后,在button1_Click
中,只迭代所有文本框:
foreach (Tuple<TextBox, TextBox> boxes in textBoxes) {
var inputBox = boxes.Item1;
var outputBox = boxes.Item2;
outputBox.Text = MethodA(Convert.ToInt32(inputBox.Text));
}
答案 1 :(得分:0)
这可能不是最佳答案,但可行:
public class Extensions
{
public MethodA(this TextBox tb)
{
tb.Text = (Convert.ToInt32(tb.Text) + 5).ToString();
}
}
现在你可以打电话:
textBox1.MethodA();
textBox2.MethodA();
...等。
这并不一定是推荐的,但这是你可以多次这样做的一种方式。
如果您不想重复这一点,那么以相同的方式内联逻辑可能会更好:
textBox1.Text = (Convert.ToInt32(textBox1.Text) + 5).ToString();
textBox2.Text = (Convert.ToInt32(textBox2.Text) + 5).ToString();
textBox3.Text = (Convert.ToInt32(textBox3.Text) + 5).ToString();