所以我在一個學校實驗室作業,我正在做一些應該相當基本的事情。我有一系列按鈕和 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; 我需要它作為回傳值,但對于我的生活,我無法弄清楚我哪里出錯了。
uj5u.com熱心網友回復:
如果您在除錯器中單步執行此代碼,您將看到該if (sender.ToString() == " ")行已被單步執行。
此外,您可以sender.ToString()在除錯器的立即視窗中運行并看到它回傳System.Windows.Forms.Button, Text: (假設您的發件人是一個帶有文本的普通按鈕 。
換句話說,這個 if 檢查沒有希望做你想做的事。既然你知道這sender將是一個 Button,你可以將它轉換為一個 Button 類并取出Text值以查看它是否確實是 按鈕:
if (((Button)sender).Text == " ")
{
toCall = "ADD";
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/332906.html
