获取局部变量返回到 WinForm 中的另一个方法
Get local variable returned to another method in WinForm
所以我在学校实验室工作,我对一些本应相当基础的东西感到厌烦。我有一系列按钮和 2 个文本框。我有 1 个方法,所有按钮都经过并传递给一个新方法以确定所需的指令。
它根据新方法计算并 return 值。
代码如下所示,在另一个方法中仅使用了 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;
我需要它成为 return 值,但对于我来说,我无法弄清楚我哪里出错了。
如果您在调试器中单步执行此代码,您将看到 if (sender.ToString() == "+")
行被单步执行。
此外,你可以运行 sender.ToString()
在调试器的立即Window中看到它returns System.Windows.Forms.Button, Text: +
(假设你的发件人是一个正常的带有文本 +
.
的按钮
换句话说,这个 if 检查没有希望做你想做的事。由于您知道 sender
将是一个按钮,您可以将其转换为按钮 class 并获取 Text
值以查看它是否确实是 +
按钮:
if (((Button)sender).Text == "+")
{
toCall = "ADD";
}
所以我在学校实验室工作,我对一些本应相当基础的东西感到厌烦。我有一系列按钮和 2 个文本框。我有 1 个方法,所有按钮都经过并传递给一个新方法以确定所需的指令。
它根据新方法计算并 return 值。
代码如下所示,在另一个方法中仅使用了 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; 我需要它成为 return 值,但对于我来说,我无法弄清楚我哪里出错了。
如果您在调试器中单步执行此代码,您将看到 if (sender.ToString() == "+")
行被单步执行。
此外,你可以运行 sender.ToString()
在调试器的立即Window中看到它returns System.Windows.Forms.Button, Text: +
(假设你的发件人是一个正常的带有文本 +
.
换句话说,这个 if 检查没有希望做你想做的事。由于您知道 sender
将是一个按钮,您可以将其转换为按钮 class 并获取 Text
值以查看它是否确实是 +
按钮:
if (((Button)sender).Text == "+")
{
toCall = "ADD";
}