如何使用在数字0处停止的退格

本文关键字:0处 何使用 数字 | 更新日期: 2023-09-27 17:58:37

我是c#的新手,我正在尝试创建一个退格按钮(用于计算器),当按下该按钮时,只能退格,直到文本框达到0。

我不知道还能补充什么,到目前为止我在:

displaytxt.Text = displaytxt.Text.Substring(0, displaytxt.Text.Length - 1);

到目前为止,它可以退格到",如果再次使用,最终会崩溃。

我希望限制退格按钮,这样如果字段中没有更多的文本输入,它将自动将文本更改为"0"。

回答了,谢谢大家:)

如何使用在数字0处停止的退格

使用String.IsNullOrEmpty

private void backSpaceButton_Click(object sender, RoutedEventArgs e)
{
    if (!String.IsNullOrEmpty(displaytxt.Text))
    {
        displaytxt.Text = displaytxt.Text.Substring(0, displaytxt.Text.Length - 1);
    }
}

在调用子字符串之前必须应用检查

if(string.Empty != displaytxt.Text)
   displaytxt.Text = displaytxt.Text.Substring(0, displaytxt.Text.Length - 1);

或者你可以检查的长度

if(displaytxt.Text.Length > 0)
  displaytxt.Text = displaytxt.Text.Substring(0, displaytxt.Text.Length - 1);

你说你不想得到一个空字符串,如果你在只剩下一个字符的情况下退格,你想得到"0"。所以,检查一下你是否有一个单一的字符串:

if (displaytxt.Text.Length == 1)
  displaytxt.Text = "0";
else
  displaytxt.Text = displaytxt.Text.Substring(0, displaytxt.Text.Length - 1);

注意:确保没有任何其他代码将displaytxt.Text设置为空字符串。

您可以尝试以下方式:

displaytxt.Text = displaytxt.Text.Length > 1 ? 
                    displaytxt.Text.Substring(0, displaytxt.Text.Length - 1) : 
                    "0";

如果您想模拟BackSpacekey,您可以这样做:

private void backSpace_Click(object sender, EventArgs e) {
  if (displaytxt.SelectionLength > 0)
    displaytxt.Text = displaytxt.Text.Remove(displaytxt.SelectionStart, displaytxt.SelectionLength);
  else if (displaytxt.SelectionStart > 0) {
    int start = displaytxt.SelectionStart;
    displaytxt.Text = displaytxt.Text.Remove(start - 1, 1);
    displaytxt.Select(start - 1, 0);
  }
}

如果你只想删除最后一个字符,你可以实现

private void backSpace_Click(object sender, EventArgs e) {
  if (!String.IsNullOrEmpty(displaytxt.Text))
    displaytxt.Text = displaytxt.Text.Remove(displaytxt.Text.Length - 1);
}