Следующий код используется как общий обработчик событий для 16-значных кнопок в шестнадцатеричном калькуляторе (0-9, A-F).Как я могу правильно настроить приложение 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;
}
}
}