Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 防止在textfield为空时用户按下退格按钮时出现错误消息_C# - Fatal编程技术网

C# 防止在textfield为空时用户按下退格按钮时出现错误消息

C# 防止在textfield为空时用户按下退格按钮时出现错误消息,c#,C#,每当用户按下空文本字段上的退格按钮时,将显示以下错误消息: “System.ArgumentOutOfRangeException”类型的未处理异常 发生在mscorlib.dll中。其他信息:不能使用StartIndex 小于零 如果文本字段为空,如何使其忽略按退格按钮 private void btnback_Click(object sender, EventArgs e) { if (remainTxt.BackColor == Color.FromArgb

每当用户按下空文本字段上的退格按钮时,将显示以下错误消息:

“System.ArgumentOutOfRangeException”类型的未处理异常 发生在mscorlib.dll中。其他信息:不能使用StartIndex 小于零

如果文本字段为空,如何使其忽略按退格按钮

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