0 / 0 / 0
Регистрация: 24.04.2020
Сообщений: 4
1

Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекци

24.04.2020, 18:24. Показов 2205. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, в Windows Forms (Visual studio 2019) выдаёт ошибку : "Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции", - помогите пожалуйста.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public partial class Form1 : Form
    {
        // Use this Random object to choose random icons for the squares
        Random random = new Random();
 
        // Each of these letters is an interesting icon
        // in the Webdings font,
        // and each icon appears twice in this list
        List<string> icons = new List<string>()
        {
            "!", "!", "N", ",", ",", "k", "k",
            "b", "b", "v", "w", "w", "z", "z"
        };
        /// <summary>
        /// Assigh each icon from the list of icons to a random square
        /// </summary>
        private void AssighIconsToSquares()
        {
            //The TableLayoutPanel has 16 labels,
             //and the icon list has 16 icons,
            // so an icon is pulled at random from the list
            // and added to each label
            foreach (Control control in tableLayoutPanel1.Controls)
            {
                {
                    // The statements you want to execute 
                    // for each label go here
                    // The statements use iconLabel to access 
                    // each label's properties and methods
                }
                Label iconLabel = control as Label;
                if (iconLabel != null)
                {
                    int randomNumber = random.Next(icons.Count);
                    iconLabel.Text = icons[randomNumber];
                    // iconLabel.ForeColor = iconLabel.BackColor;
                    icons.RemoveAt(randomNumber);
                }
            }
        }
Ошибку выдает здесь :iconLabel.Text = icons[randomNumber];
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.04.2020, 18:24
Ответы с готовыми решениями:

Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекци
Здравствуйте, в Windows Forms (Visual studio 2017) выдаёт ошибку : &quot;Индекс за пределами диапазона....

Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекци
Как исправить ошибку &quot;Индекс за пределами диапазона. Индекс должен быть положительным числом, а его...

Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекци
Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен...

Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать разме
Вот такая ошибка возникла - Как её исправить ?

3
490 / 167 / 98
Регистрация: 23.01.2020
Сообщений: 324
24.04.2020, 19:43 2
Лучший ответ Сообщение было отмечено Z0rex как решение

Решение

Z0rex, Здравствуйте, предполагаю что дело в этом:

C#
1
icons.RemoveAt(randomNumber);
в один момент у вас заканчиваются записи в списке.

причина вероятно кроется тут:

C#
1
2
//The TableLayoutPanel has 16 labels,
//and the icon list has 16 icons,
в комментах написано что у вас 16 лейблов и 16 иконок для них, я предполагаю что у вас действительно 16 лейблов, посчитайте иконки, у вас их 14 в List<string> icons.
1
7 / 5 / 2
Регистрация: 03.12.2019
Сообщений: 17
24.04.2020, 19:48 3
Лучший ответ Сообщение было отмечено Z0rex как решение

Решение

У Вас 16 лэйблов, а записей в спике icons всего 14.
В цикле foreach() Вы перебираете все лэйблы и для каждой назначаете иконку из списка.
На 15ой итерации размер списка иконок оказывается == 0, но после этого происходит попытка обращения к нулевому элементу списка. Вот тут и выход за пределы.
1
0 / 0 / 0
Регистрация: 24.04.2020
Сообщений: 4
24.04.2020, 21:57  [ТС] 4
спасибо огромное,заработало
0
24.04.2020, 21:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.04.2020, 21:57
Помогаю со студенческими работами здесь

Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать разме
int id = 0; id = groups; Ошибка. Индекс за пределами диапазона. Индекс должен быть...

Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции
Подскажите, в чем ошибка? Выдает ошибку: Индекс за пределами диапазона. Индекс должен быть...

Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекци
Доброго времени суток. Есть проект, который взаимодействует с Excel. При нажатии на кнопку я...

Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать разме
Ребят, в общем вылазиет эта ошибка( Индекс за пределами диапазона. Индекс должен быть положительным...

Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекци
Есть код который создаёт матрицу в Гриде размером n на n Следущее действие должно считать сумму в...

Что делать если vb.net выдает ошибку "Индекс за пределами диапазона. Индекс должен быть положительным числом, а его раз"
Выдает ошибку вот такой код, в checklistbox надо поместить все значения из списка list, но при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru