如何使用在数字0处停止的退格
本文关键字:0处 何使用 数字 | 更新日期: 2023-09-27 17:58:37
我是c#的新手,我正在尝试创建一个退格按钮(用于计算器),当按下该按钮时,只能退格,直到文本框达到0。
我不知道还能补充什么,到目前为止我在:
displaytxt.Text = displaytxt.Text.Substring(0, displaytxt.Text.Length - 1);
到目前为止,它可以退格到",如果再次使用,最终会崩溃。
我希望限制退格按钮,这样如果字段中没有更多的文本输入,它将自动将文本更改为"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);
}