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