从方法返回值

时间:2014-08-25 18:41:19

标签: c#

我用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;
    }

2 个答案:

答案 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();