Не получается вывести Число C# Windows Forms

Делаю Генератор рандомных чисел, но при вводе всегда показывает 0, помогите пожалуйста

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace rand
{
    public partial class From1 : Form
    {
        int a, b;

        public From1()
        {
            InitializeComponent();
        }

        private void From1_Load(object sender, EventArgs e)
        {

        }
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            try
            {
                a = Convert.ToInt32(textBox1.Text);
            }
            catch (FormatException) { }
        }
        private void textBox2_TextChanged(object sender, EventArgs e)
        {
            try
            {
                b = Convert.ToInt32(textBox1.Text);
            }
            catch (FormatException) { }
        }
        private void label1_Click(object sender, EventArgs e)
        {
            
        }

        private void label2_Click(object sender, EventArgs e)
        {

        }
        
        private void button1_Click(object sender, EventArgs e)
        {
            int[] arr = new int[100000];
            
            Random r = new Random();
            for (int i = 0; i < arr.Length; i++)
            {
                arr[i] = r.Next(a, b);
                var c = Convert.ToString(arr[i]);
                label1.Text = c;
            }

        }
        private void maskedTextBox1_MaskInputRejected(object sender, MaskInputRejectedEventArgs e)
        {

        }

        private void label4_Click(object sender, EventArgs e)
        {

        }
    }
}

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Aarnihauta

Для начала:

  1. Нет смысла каждый раз реагировать на события TextChanged (можно убрать)
  2. Назовите контролы textBox1, textBox2 и label1 значимыми именами, пренадлежность которых понятна из названия

Так же, в ваших обработчиках события используется один и тот же textBox1, а нужно было textBox1 и textBox2

private void textBox1_TextChanged(object sender, EventArgs e)
{
    try
    {
        a = Convert.ToInt32(textBox1.Text);
    }
    catch (FormatException) { }
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
    try
    {
        b = Convert.ToInt32(textBox1.Text);
    }
    catch (FormatException) { }
}

И того останется:

namespace rand
{
    public partial class From1 : Form
    {
        int a, b;
        int randomNumber;
        int[] arr;
        public From1()
        {
            InitializeComponent();
            arr = new int[100000];
        }
        
        private void button1_Click(object sender, EventArgs e)
        {
            Random rand = new Random();

            //Желательно int.TryParse, а не Convert.ToInt32
            a = Convert.ToInt32(textBox1.Text);
            b = Convert.ToInt32(textBox1.Text);
            for (int i = 0; i < arr.Length; i++)
            {
                arr[i] = rand.Next(a, b);
                randomNumber = Convert.ToString(arr[i]);
                label1.Text = randomNumber;
            }

        }
    }
}
→ Ссылка