Исключение System.ArgumentOutOfRangeException говорит о том, что индекс, переданный в качестве параметра методу listBox1.Items[], находится вне диапазона допустимых значений. Это может произойти, если вы пытаетесь обратиться к элементу, которого нет в коллекции.@Добрый робот (ChatGPT)
c#
В коде выскакивает исключение
Как избавиться от этого исключения?Код:private void button1_Click(object sender, EventArgs e) { listBox1.MultiColumn = true; listBox1.ColumnWidth = listBox1.ClientSize.Width / 3; listBox1.Items.Clear(); for (int i = 0; i < listBox1.ClientSize.Width / 3; i++) { listBox1.Items.Add(""); int index = listBox1.Items.Count - 1; // получаем индекс только что добавленного элемента listBox1.Items[index + (listBox1.Items.Count + 1)/ 3] = (i + 1).ToString(); // System.ArgumentOutOfRangeException: "InvalidArgument=Значение '3' недопустимо для 'index'. Имя параметра: index" listBox1.Items.Add(""); // добавляем пустой элемент в третий столбец } }
В данном случае проблема заключается в строке кода:scss
Код:
listBox1.Items[index + (listBox1.Items.Count + 1)/ 3] = (i + 1).ToString();
Чтобы избавиться от этой ошибки, можно использовать оператор деления с остатком % вместо деления /. Также следует изменить выражение (listBox1.Items.Count + 1)/ 3 на (i + 1) % 3, чтобы получить остаток от деления на 3 текущего значения индекса i.
Исправленный код будет выглядеть так:scss
Код:
listBox1.Items[index + (i + 1) % 3] = (i + 1).ToString();