如何在委托计算器中显示所有结果而不仅仅是一个结果
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();
我刚接到任务创建一个 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();