Динамическое создание меток ссылок с использованием foreach в С#

Я пытаюсь динамически создавать метки ссылок, используя foreach . Я устанавливаю текст каждой метки ссылки в строку, которая хранится в массиве строк flatestgames и чьи ссылки хранятся в массиве строк flatestlinks. Но он генерирует исключение нулевой ссылки в строке flg[i].Text = s, хотя для s не установлено значение null. Пожалуйста, помогите мне. Ниже приведен фрагмент кода:

if (!(flatestgames == null || flatestgames.Length < 1))
        {
            i = 0;
            LinkLabel[] flg = new LinkLabel[10];
            foreach (string s in flatestgames)
            {
                flg[i].Text = s;
                flg[i].Links.Add(0, s.Length, flatestlinks[i]);
                Point p = new Point(43, 200 + 23 * i);
                flg[i].Location = p;
                flg[i].Visible = true;
                flg[i].Show();
                this.Controls.Add(flg[i]);
                i++;
            }
        }

person Prabhanjan Bhat    schedule 12.07.2013    source источник


Ответы (2)


Попробуйте flg[i] = new LinkLabel(); в цикле foreach

if (!(flatestgames == null || flatestgames.Length < 1))
        {
            i = 0;
            LinkLabel[] flg = new LinkLabel[10];
            foreach (string s in flatestgames)
            {
                flg[i] = new LinkLabel();
                flg[i].Text = s;
                flg[i].Links.Add(0, s.Length, flatestlinks[i]);
                Point p = new Point(43, 200 + 23 * i);
                flg[i].Location = p;
                flg[i].Visible = true;
                flg[i].Show();
                this.Controls.Add(flg[i]);
                i++;
            }
        }
person Satish Bejgum    schedule 12.07.2013
comment
Вы должны указать в своем ответе, где в цикле foreach ему нужно это сделать и почему. (Это правильно, кстати +1) - person Sayse; 12.07.2013
comment
@PrabhanjanBhat - тогда вам следует обновить свой вопрос, добавив дополнительную информацию (т.е. обновленный источник кода) - person Sayse; 12.07.2013
comment
`LinkLabel[] flg = new LinkLabel[10];` создаст массив со всеми значениями null, foreach (string s in flatestgames) { flg[i] = new LinkLabel(); flg[i].Text = s; - person Satish Bejgum; 12.07.2013

Вы уверены, что длина вашего массива flatestgames меньше 10? Сначала вы должны проверить это и объявить:

LinkLabel[] flg = new LinkLabel[10];

as:

LinkLabel[] flg = new LinkLabel[flatestgames.Length];

Я думаю, вы получаете это исключение, потому что в foreach вы пытаетесь получить более 10 объектов, как вы объявили.

person Maxim Zhukov    schedule 12.07.2013