获取本地变量返回到WinForm中的另一个方法



我在学校实验室工作,我在一些应该相当基本的东西上度过了一段地狱的时光。我有一系列按钮和2个文本框。我有一个方法,所有的按钮通过并被传递到一个新的方法,以确定所需的指令。

从新方法中计算并返回值。

代码看起来是这样的,在另一个方法中只使用了1个按钮和它关联的if语句。

public void PassControlDataOnClick(object sender, EventArgs e)
{
string toCall = "";
string szLeft = box_L_Input.Text;
string szRight = box_R_Input.Text;
decimal dLeft = Convert.ToDecimal(szLeft);
decimal dRight = Convert.ToDecimal(szRight);
if (sender.ToString() == "+")
{
toCall = "ADD";
}

decimal dAnswer = MathCalc(dLeft, dRight, toCall);

string szAnswer = dAnswer.ToString();
string szEquation = $"{szLeft}{" "}{((Control)sender).Text}{" "}{szRight}{" = "}{szAnswer}";
lbl_Output.Text = szEquation;
}
public decimal MathCalc(decimal dL, decimal dR, string toCall)
{
decimal dA = 0.0m;
if (toCall == "ADD")
{
dA = dL + dR;
}
return dA;
}

每次我运行这个,我得到的输出是从行十进制dA = 0.0m;我需要它作为返回值,但是对于我的生命,我不知道我哪里出错了。

如果您在调试器中逐步执行此代码,您将看到if (sender.ToString() == "+")行被跳过。

进一步,您可以在调试器的即时窗口中运行sender.ToString(),并看到它返回System.Windows.Forms.Button, Text: +(假设您的发送者是文本+的正常按钮)。

换句话说,这个if检查没有希望做你想做的事情。既然你知道sender将是一个按钮,你可以将它强制转换为一个按钮类,并获得Text的值,看看它是否确实是+按钮:

if (((Button)sender).Text == "+")
{
toCall = "ADD";
}

相关内容

  • 没有找到相关文章

最新更新