以下代碼正在用作十六進制計算器(0-9,A-F)上的16位數字按鈕的通用事件處理程序。如何讓我的StringBuilder正確追加?
以下說明定義我需要完成的事情:
如果計算器處於顯示模式時,按下一個數字,這個數字就更換顯示的當前內容,並放置在輸入模式下的計算器。如果計算器處於輸入模式,則有三種情況:
- 如果顯示內容爲「0」,則按下的按鈕上的數字將替換顯示內容。
- 否則,如果顯示內容少於八個字符(因爲我們正在處理32位字),則按下的按鈕上的數字將被添加到顯示內容中。
- 否則,按鈕被忽略。
在我的計算器上按下一個按鈕將正確更新顯示。但是,如果我按另一個按鈕,而不是將新的字符附加到StringBuilder上,它將顯示最後一個按鈕的雙字符。例如。一次按'C'將顯示'C'。按'C'然後說'8'將顯示'88'。我的問題在哪裏?
public void ProcessClick(object sender, EventArgs e)
{
StringBuilder _button = new StringBuilder();
_button.Append(((Button)sender).Text);
if (mode)
{
uxDisplay.Text = _button.ToString();
mode = false;
}
else
{
if (uxDisplay.Text == "0")
{
uxDisplay.Text = _button.ToString();
}
else if (uxDisplay.Text.Length < 8)
{
uxDisplay.Text = _button.Append(((Button)sender).Text).ToString();
}
else
{
return;
}
}
}