System.ArgumentOutOfRangeException 在一个字符串中

System.ArgumentOutOfRangeException in a String

我试图调试它,但我无法弄清楚它有什么问题。 我正在尝试构建一个计算器,但我一直收到此错误。

  double currentResult = 0;

        int stringLengthStarter = 0;
        int stringLengthCounter = 0;

        public Form1()
        {
            InitializeComponent();
        }

        // Appends the numbers to the text box when the buttons are clicked

        private void button1_Click(object sender, EventArgs e) // Click on the digit 1
        {
            if (clearingTextBoxFlag)
            {
                textBox1.Clear();
            }
            stringLengthCounter++;
            textBox1.AppendText("1");
            clearingTextBoxFlag = false;
        }


 private void plusButton_Click(object sender, EventArgs e) // Plus button clicked
        {
            pick = 1; // 1 - Plus operation
            currentResult = currentResult + Convert.ToInt32(textBox1.Text.Substring(stringLengthStarter, stringLengthCounter));
            stringLengthStarter = stringLengthCounter + 1;
            stringLengthCounter = 0;
            textBox1.AppendText("+");
        }

 private void equalsButton_MouseClick(object sender, MouseEventArgs e) // Mouse click on the equals button
        {
            textBox1.Clear();
            if (pick == 1) // Plus operation
            {
                checkTextBox.Text = textBox1.Text;
                currentResult = currentResult + Convert.ToInt32(textBox1.Text.Substring(stringLengthStarter, stringLengthCounter)); // The problem
                textBox1.Text = "" + currentResult;
            }

我正在尝试执行 1+1=,它在这一行得到了执行:currentResult = currentResult + Convert.ToInt32(textBox1.Text.Substring(stringLengthStarter, stringLengthCounter)); // 问题

在您的 equalsButton_MouseClick 方法中,您要做的第一件事是清除 textBox1,这会将 textBox1.Text 设置为 string.Empty。之后您尝试创建 textBox1.Text 的子字符串,但字符串的长度为 0,这就是您的方法崩溃的原因。它正在尝试访问不再存在的字符串的索引。

尝试移动方法末尾的 textBox1.Clear。