c# - 获取局部变量返回到 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: +
(假设您的发件人是带有 text 的普通按钮+
。
换句话说,这个 if 检查没有希望做你想做的事。由于您知道这sender
将是一个按钮,您可以将其转换为一个 Button 类并获取Text
值以查看它是否确实是+
按钮:
if (((Button)sender).Text == "+")
{
toCall = "ADD";
}
推荐阅读
- error-correction - 为什么 CCSDS 推荐的 BCH 纠错多项式不适用于 bchlib?
- javascript - Google App Script 使用 if/else 条件语句在循环中添加 180 天
- python - 程序激活错误的谷歌云平台项目
- perl - 为什么 Perl pos() 总是返回 undef?
- python - 如何忽略输入键/将其视为 Python 中的空格键?
- javascript - 在问答游戏中基于使用对象数组选择正确答案来增加分数
- python - Python PyCharm 在 /usr/local/bin 中找不到可执行文件
- javascript - 无法设置未定义的属性“二”
- batch-file - 如何检查“if”语句是否包含某些内容
- lasso-regression - hierNet 用于生存数据