C# 防止在textfield为空时用户按下退格按钮时出现错误消息
每当用户按下空文本字段上的退格按钮时,将显示以下错误消息: “System.ArgumentOutOfRangeException”类型的未处理异常 发生在mscorlib.dll中。其他信息:不能使用StartIndex 小于零 如果文本字段为空,如何使其忽略按退格按钮C# 防止在textfield为空时用户按下退格按钮时出现错误消息,c#,C#,每当用户按下空文本字段上的退格按钮时,将显示以下错误消息: “System.ArgumentOutOfRangeException”类型的未处理异常 发生在mscorlib.dll中。其他信息:不能使用StartIndex 小于零 如果文本字段为空,如何使其忽略按退格按钮 private void btnback_Click(object sender, EventArgs e) { if (remainTxt.BackColor == Color.FromArgb
private void btnback_Click(object sender, EventArgs e)
{
if (remainTxt.BackColor == Color.FromArgb(245, 244, 162))
{
remainTxt.Text = remainTxt.Text.Remove(remainTxt.Text.Length - 1, 1);
}
else if (totalTxt.BackColor == Color.FromArgb(245, 244, 162))
{
totalTxt.Text = totalTxt.Text.Remove(totalTxt.Text.Length - 1, 1);
}
else if (paidTxt.BackColor == Color.FromArgb(245, 244, 162))
{
paidTxt.Text = paidTxt.Text.Remove(paidTxt.Text.Length - 1, 1);
}
}
您必须检查文本长度是否不是0。处理程序中
Text.Remove
函数的第一个参数获取-1作为第一个参数。这会导致引发异常,因为这不是有效的索引。如果(remainxt.Text.Length>0)块必须检查文本长度是否不是0,则应将整个方法体包装在块中。处理程序中Text.Remove
函数的第一个参数获取-1作为第一个参数。这会导致引发异常,因为这不是有效的索引。如果(remainxt.Text.Length>0)
块必须检查文本长度是否不是0,则应将整个方法体包装在块中。处理程序中Text.Remove
函数的第一个参数获取-1作为第一个参数。这会导致引发异常,因为这不是有效的索引。如果(remainxt.Text.Length>0)
块必须检查文本长度是否不是0,则应将整个方法体包装在块中。处理程序中Text.Remove
函数的第一个参数获取-1作为第一个参数。这会导致引发异常,因为这不是有效的索引。您应该将整个方法体包装在if(remainxt.Text.Length>0)
块中听起来您试图以错误的方式解决问题。您遇到的问题是,在对文本框运行某些逻辑之前,代码没有检查文本框是否为空
更改代码以检查是否!在尝试从Length
属性中减去1之前,string.IsNullOrEmpty(remainText.Text)
(以及其他属性)。因为文本框是空的,长度
-1是-1,并且确实超出了范围。听起来您试图以错误的方式解决问题。您遇到的问题是,在对文本框运行某些逻辑之前,代码没有检查文本框是否为空
更改代码以检查是否!在尝试从Length
属性中减去1之前,string.IsNullOrEmpty(remainText.Text)
(以及其他属性)。因为文本框是空的,长度
-1是-1,并且确实超出了范围。听起来您试图以错误的方式解决问题。您遇到的问题是,在对文本框运行某些逻辑之前,代码没有检查文本框是否为空
更改代码以检查是否!在尝试从Length
属性中减去1之前,string.IsNullOrEmpty(remainText.Text)
(以及其他属性)。因为文本框是空的,长度
-1是-1,并且确实超出了范围。听起来您试图以错误的方式解决问题。您遇到的问题是,在对文本框运行某些逻辑之前,代码没有检查文本框是否为空
更改代码以检查是否!在尝试从Length
属性中减去1之前,string.IsNullOrEmpty(remainText.Text)
(以及其他属性)。因为文本框是空的,Length
-1是-1,并且确实超出了范围。我将把remove last character操作提取到一个防止空文本字段的函数中
private void RemoveLast(TextBox tb) {
if (tb.Text.Length > 0) {
tb.Text = tb.Text.Remove(tb.Text.Length - 1, 1);
}
}
然后切换事件处理程序以使用该函数
private void btnback_Click(object sender, EventArgs e)
{
if (remainTxt.BackColor == Color.FromArgb(245, 244, 162))
{
RemoveLast(remainTxt);
}
else if (totalTxt.BackColor == Color.FromArgb(245, 244, 162))
{
RemoveLast(totalTxt);
}
else if (paidTxt.BackColor == Color.FromArgb(245, 244, 162))
{
RemoveLast(paidTxt);
}
}
我将把remove last character操作抽象为一个防止出现空文本字段的函数
private void RemoveLast(TextBox tb) {
if (tb.Text.Length > 0) {
tb.Text = tb.Text.Remove(tb.Text.Length - 1, 1);
}
}
然后切换事件处理程序以使用该函数
private void btnback_Click(object sender, EventArgs e)
{
if (remainTxt.BackColor == Color.FromArgb(245, 244, 162))
{
RemoveLast(remainTxt);
}
else if (totalTxt.BackColor == Color.FromArgb(245, 244, 162))
{
RemoveLast(totalTxt);
}
else if (paidTxt.BackColor == Color.FromArgb(245, 244, 162))
{
RemoveLast(paidTxt);
}
}
我将把remove last character操作抽象为一个防止出现空文本字段的函数
private void RemoveLast(TextBox tb) {
if (tb.Text.Length > 0) {
tb.Text = tb.Text.Remove(tb.Text.Length - 1, 1);
}
}
然后切换事件处理程序以使用该函数
private void btnback_Click(object sender, EventArgs e)
{
if (remainTxt.BackColor == Color.FromArgb(245, 244, 162))
{
RemoveLast(remainTxt);
}
else if (totalTxt.BackColor == Color.FromArgb(245, 244, 162))
{
RemoveLast(totalTxt);
}
else if (paidTxt.BackColor == Color.FromArgb(245, 244, 162))
{
RemoveLast(paidTxt);
}
}
我将把remove last character操作抽象为一个防止出现空文本字段的函数
private void RemoveLast(TextBox tb) {
if (tb.Text.Length > 0) {
tb.Text = tb.Text.Remove(tb.Text.Length - 1, 1);
}
}
然后切换事件处理程序以使用该函数
private void btnback_Click(object sender, EventArgs e)
{
if (remainTxt.BackColor == Color.FromArgb(245, 244, 162))
{
RemoveLast(remainTxt);
}
else if (totalTxt.BackColor == Color.FromArgb(245, 244, 162))
{
RemoveLast(totalTxt);
}
else if (paidTxt.BackColor == Color.FromArgb(245, 244, 162))
{
RemoveLast(paidTxt);
}
}