我以asp.net開頭,但我不太確定我做錯了什麼。其實我的第一步是製作一個計算器,但在尋找答案2小時後,我決定向你詢問這個問題。onClick action後無效
我有10個按鈕[0,1,2 ... 9],4個動作按鈕[+, - ,*,/]和一個按鈕來計算[=]:
int firstNumber, secondNumber;
Button lastClicked;
bool isFirstNumberSet;
protected void Page_Load(object sender, EventArgs e)
{
firstNumber = 0;
isFirstNumberSet = false;
lastClicked = new Button();
}
public void addToTextbox(object sender, EventArgs e)
{
Button number = (Button)sender;
TextBox1.Text += number.Text;
}
public void doSomething(object sender, EventArgs e)
{
if (isFirstNumberSet.Equals(false)) firstNumber = int.Parse(TextBox1.Text);
else secondNumber = int.Parse(TextBox1.Text);
lastClicked = new Button();
lastClicked = (Button)sender;
isFirstNumberSet = true;
TextBox1.Text = "";
}
public void calculate(object sender, EventArgs e)
{
switch (lastClicked.ID)
{
case "ButtonPlus":
TextBox1.Text = (firstNumber + secondNumber).ToString();
isFirstNumberSet = false;
break;
case "ButtonMinus":
TextBox1.Text = (firstNumber - secondNumber).ToString();
isFirstNumberSet = false;
break;
case "ButtonDziel":
TextBox1.Text = (firstNumber/secondNumber).ToString();
isFirstNumberSet = false;
break;
case "ButtonMnoz":
TextBox1.Text = (firstNumber * secondNumber).ToString();
isFirstNumberSet = false;
break;
}
但當我做例如2 + 2的動作,然後我打「=」。我得到有關代碼的異常:
開關(lastClicked.ID)
它說lastClicked爲空,但如何?點擊「+」後,應該將發送者對象保存到這個變量中。我錯了嗎?
你可以一步一步與debuger一起檢查doSomething函數是否被實際調用,並且lastClicked是按照預期設置的。 –
每次頁面重新加載時,Page_Load()事件都會聲明一個新的lastClicked變量。由於新按鈕沒有添加到傳出文檔中,因此它永遠不會收到ID,因此在調用calculate()方法時它爲空。 –
我檢查過,doSomething發件人被正確地傳遞給lastClicked後,但當我做另一個動作像打任何數字按鈕,然後lastClicked再次來到空:( –