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

时间:2014-04-16 08:00:18

标签: c#

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

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

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

到目前为止,它能够退回到" "如果再次使用,最终会崩溃。

我希望限制退格按钮,以便在该字段中不再输入文字时,它会自动将文本更改为" 0"。

回答,谢谢你们:)

5 个答案:

答案 0 :(得分:1)

使用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);
    }
}

答案 1 :(得分:0)

您必须在调用substring

之前应用check
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);

答案 2 :(得分:0)

你说你想永远不会得到一个空字符串,如果你只有一个字符,你想得到"0"。因此,请检查您是否有单字符串:

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

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

答案 3 :(得分:0)

如果你想模仿 BackSpace ,你可以这样做:

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);
}

答案 4 :(得分:0)

您可以尝试这种方式:

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