2015-05-21 2 views
-3

Я попытался отладить это, и я не могу понять, что с ним не так. Im пытается построить калькулятор, но я продолжаю получать эту ошибку.System.ArgumentOutOfRangeException в строке

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 = и он получает execption на этой линии: currentResult = currentResult + Convert.ToInt32(textBox1.Text.Substring(stringLengthStarter, stringLengthCounter)); // Проблема

+0

Какое исключение? – shruti1810

+0

Не уверен, что он решает проблему, но у вас есть 'stringLengthCounter ++', но нет назначения. Вам понадобится 'stringLengthCounter = stringLengthCounter ++' для сохранения изменений. –

+0

@ shruti1810 System.ArgumentOutOfRangeException. – God

ответ

1

В вашем методе equalsButton_MouseClick, первое, что вы делаете, чтобы очистить textBox1 , который установит textBox1.Text в string.Empty. После этого вы пытаетесь создать подстроку textBox1.Text, но длина строки равна 0, поэтому ваш метод сбой. Он пытается получить доступ к индексу строки, которая больше не существует.

Попробуйте переместить textBox1.Clear в конце вашего метода.

+0

Dumb me.THanks man.and все, кто пытался помочь :). – God

+0

Мое удовольствие! :) – mgarant

Смежные вопросы