【问题标题】:Return value from method方法的返回值
【发布时间】:2014-10-18 23:37:34
【问题描述】:

我正在创建带有 20 个文本框的计算器 - 10 个用于输入,10 个用于输出。在创建一个方法后,我将参数(在前 10 个文本框中定义)返回给 main 方法。

要获取所有 10 个值,是否真的需要为所有 10 个或更多文本框编写代码,因为我已经开始了,或者有更聪明的方法如何传递到方法文本框参数并一次返回多个值?

更新:

正如您推荐的那样,我创建了元组列表并使用 foreach 循环遍历它们,但现在我收到错误: 错误 1 ​​无法将类型“int”隐式转换为“string”。你能帮我指出问题出在哪里吗?

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

【问题讨论】:

  • 1) 创建一个字典或元组列表来链接文本框对,2) 循环遍历集合,从一个文本框获取输入并将输出放入另一个文本框。从一个方法返回多个值不是好的做法(在这里也没有必要)。
  • 你在使用窗口窗体吗?
  • 是的,我正在使用窗口窗体。我想这个 Tuple 类对于像我这样的新手来说有点太复杂了,所以我会四处搜索看看它实际上是什么以及它做了什么,然后再回到这篇文章。谢谢你的帮助。
  • @D Stanley, @Michael 有什么想法吗,伙计们?

标签: c#


【解决方案1】:

您可以将所有输入输出文本框组合存储在构造函数中:

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));
}

【讨论】:

    【解决方案2】:

    这可能不是最好的答案,但它会起作用:

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

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 2018-04-05
      • 2021-05-10
      • 2012-12-18
      • 2016-03-02
      • 2018-03-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多