Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Массив объектов.

422
12 марта 2006 года
Dimarik
181 / / 12.02.2005
Нужно создать массив объектов label. В классе Forms пишу:

private System.Windows.Forms.Label label[];
Затем в private void InitializeComponent():

this.label = new System.Windows.Forms.Label[15];

После, задаю координаты на форме для каждого элемента массива:

for (int i=0; i<15; i++)
{
this.label.Location = new System.Drawing.Point(x,y);
y+=10;
}

При исплнениеи этого кода, выводится сообщение:
An unhandled exception of type 'System.NullReferenceException' occured in Graphik.exe.

Additional information: Object reference not set to an instance of an object.

В чём тут ошибка?
1.9K
12 марта 2006 года
mail0
137 / / 09.05.2005
Цитата:
Originally posted by Dimarik
Нужно создать массив объектов label. В классе Forms пишу:

private System.Windows.Forms.Label label[];
Затем в private void InitializeComponent():

this.label = new System.Windows.Forms.Label[15];

После, задаю координаты на форме для каждого элемента массива:

При исплнениеи этого кода, выводится сообщение:
An unhandled exception of type 'System.NullReferenceException' occured in Graphik.exe.

Additional information: Object reference not set to an instance of an object.

В чём тут ошибка?


Ты создал массив, но не инициализировал элементы массива.
Сделай так :

 
Код:
this.labels = new System.Windows.Forms.Label[15];
foreach (System.Windows.Forms.Label label in labels)
{
      label = new System.Windows.Forms.Label();
}
for (int i=0; i<15; i++)
{
    this.label.Location = new System.Drawing.Point(x,y);
        y+=10;
}

И не забудь : this.Controls.AddRange(labels);
422
12 марта 2006 года
Dimarik
181 / / 12.02.2005
Цитата:
Originally posted by mail0
Ты создал массив, но не инициализировал элементы массива.
Сделай так :
 
Код:
this.labels = new System.Windows.Forms.Label[15];
foreach (System.Windows.Forms.Label label in labels)
{
      label = new System.Windows.Forms.Label();
}
for (int i=0; i<15; i++)
{
    this.label.Location = new System.Drawing.Point(x,y);
        y+=10;
}

И не забудь : this.Controls.AddRange(labels);



Спасибо!

Только вот за место foreach ипользовал for, т.к. foreach позволяет использовать содержимое массива в режиме "только чтение". :D

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог