Q:

Индекс находится вне границ массива

Иногда после ввода чисел в массив, программа выводит ошибку компиляции "Индекс находится вне границ массива", хотя кол-во чисел может быть любым, знающие люди, помогите...
private void button1_Click(object sender, EventArgs e)
        {
           string noelem = "Элементов не найдено";
           int sum = 0;
           int pr = 1;
           int[] mas = new int[TB1.Lines.Length];
           //
           for (int i = 1; i < mas.Length; i++)
               mas[i] = Convert.ToInt32(TB1.Lines[i]);
           //
           for (int i = 1; i < mas.Length; i++)
               if (mas[i] < 50)
                   pr *= mas[i];
               else 
               if (mas[i] > 100)
                   sum += mas[i];
           //
           for (int i = 1; i < 2; i++) {
               if (pr == 1) TB2.Text = noelem.ToString();
               else
                   mas[i] = pr;
           }
           for (int i = 2; i < 3; i++) {
               mas[i] = sum;
           }
               //
               TB2.Clear();
           for (int i = 1; i < 2; i++)
           if (pr == 1) TB2.Text = noelem.ToString();
           else
               TB2.AppendText(mas[i] + Environment.NewLine);
           for (int i = 2; i < 3; i++)
               if (sum == 0) TB3.Text = noelem.ToString();
           else
           TB3.AppendText(mas[i] + Environment.NewLine);
       }

A:

В нескольких циклах for используются константы для задания верхнего предела, при это игнорируется реальное количество элементов. 
Таким образом, при малом количестве элементов в TB1.Lines будет произведено обращение к несуществующему элементу массива. Например, при наличии всего двух элементов следующий цикл попытается обратиться к третьему
 for (int i = 2; i < 3; i++) {
               mas[i] = sum;
           }

