如何在委托计算器中显示所有结果而不仅仅是一个结果

How to show all results and not just one in a delegate calculator

我刚接到任务创建一个 WPF 应用程序,它通过使用委托(public 委托显示不同计算(+、-、/、% 等)的结果 无效计算(int a,int b)。 问题是我的程序似乎只显示这些计算的最后结果,但我需要在列表框中显示它们。

这是我现在的代码:

public partial class MainWindow : Window
{
      public delegate string CalculateHandler(int a, int b);
      public MainWindow()
      {
           InitializeComponent();
      }

      private void BtnCalculate_Click(object sender, RoutedEventArgs e) { 

        CalculateHandler Calculate = new CalculateHandler(Add.Addition);
        Calculate += Subtract.Subtraction;
        Calculate += Multi.Multiplication;
        Calculate += Div.Division;
        Calculate += Root.Ro;
        Calculate += Mod.Modulo;
        Calculate += Pot.Potency;

        int a = Int32.Parse(TextBoxZahlA.Text); 
        int b = Int32.Parse(TextBoxZahlB.Text);

        listBox.Items.Add(Calculate(a, b));
        listBox.Items.Refresh(); 
    }
}

计算之一的示例:

class Multi
{
    public static string Multiplication (int a, int b)
        {
            string result3 = a + " * " + b + " = " + (a * b);
            return result3;
        }
    }
}

感谢您的帮助!!

当您调用 Calculate(a, b) 时,它会 运行 所有委托,但只有最后一个会 return 编辑为 return 值。一种解决方案是使用一组委托并对其进行迭代,或者将每个委托添加到 listBox.Items(尽管我不建议这样做,因为这是重复的工作)。

我认为一个好的方法是创建一个包含每个计算的处理程序的列表。然后使用 for-each 循环计算值并将它们添加到列表框。

像这样:

            List<CalculateHandler> CalculateHandlers = new List<CalculateHandler>();
            CalculateHandlers.Add(Add.Addition);
            CalculateHandlers.Add(Subtract.Subtraction);
            CalculateHandlers.Add(Multi.Multiplication);
            ....

            int a = Int32.Parse(textBox.Text);
            int b = Int32.Parse(textBox_Copy.Text);

            foreach (var handler in CalculateHandlers)
            {
                listBox.Items.Add(handler(a, b));
            }

            listBox.Items.Refresh();