создание массива checkBox'ов

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

kroskros
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 176
Зарегистрирован: 01.08.2005 (Пн) 6:59

создание массива checkBox'ов

Сообщение kroskros » 15.09.2005 (Чт) 7:44

Подскажите?

Надо создать несколько чекБоксов, их количество определяется по ходу работы программы.

В событии формы Лоад пишу:

Dim chkAnswer() As CheckBox

далее...

For ii As Integer = 0 To N
radAnswer(ii) = New RadioButton <-- ОШИБКА
Me.Controls.Add(radAnswer(ii))
Next

при выполнении программы выходит ошибка
"Object reference not set to an instance of an object."

Подскажите, КАК мне создать массив чекбоксов?
Max

kroskros
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 176
Зарегистрирован: 01.08.2005 (Пн) 6:59

Сообщение kroskros » 15.09.2005 (Чт) 7:47

упс....
в тексте привел кусок создания РадиоБоттон...
но не суть важно, просто мне надо создавать либо ЧекБоксы, либо Радио...
в зависимости от ситуации.

всеодно не работает не то, не то.. :(
Max

Создатель
Постоялец
Постоялец
 
Сообщения: 422
Зарегистрирован: 21.04.2004 (Ср) 3:32
Откуда: Новосибирск

Сообщение Создатель » 15.09.2005 (Чт) 7:52

Гым, а ты как объявляешь массив то?

Допустим так все работает:

Код: Выделить всё
Dim radanswer() As RadioButton = New RadioButton(10) {}
        For ii As Integer = 0 To 10
            radanswer(ii) = New RadioButton
            Me.Controls.Add(radAnswer(ii))
        Next


Естественно вместо 10 вставляешь кол-во.

kroskros
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 176
Зарегистрирован: 01.08.2005 (Пн) 6:59

Сообщение kroskros » 15.09.2005 (Чт) 8:14

О! СПАСИБО!

ТАК. наверное стОит вынести это в новый топик, но раз уж начали
поясните, пожалуйста КАК описываются переменные, или скинте кто-нить ссылку, где это компактно описано?
Чем отличаются записи
1
Dim i As Integer
/ладно, здесь понятно, я описываю переменную, не создавая экземпляра?

2
Dim i As New Integer
/Описываю переменную и создаю экземпляр? ей присваивается какое-нибудь значение? (0, например) или значение будет не определенным?

3
Dim i As Integer
i= New Integer
/это аналогично 2?

4
Dim i As Integer = 6
/объявляю, и присваиваю 6, а почему NEW не надо?


Азы конечно, но в книге я так и не смог найти ВНЯТНОГО объяснения
разницы в записях...
Max

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 15.09.2005 (Чт) 9:12

Dim i As New Integer
-Зачем так делаешь? Ты что обьект создаешь?
При создании обьекта какого нить класса ты вызываешь его конструктор New() Ли перегруженый конструктор new([Параметры]).
В классе данный конструктор представляет собой процедуру:
Sub New()
'Ту что то, что необходимо для правильной рабюоты класса (Но тебя 'как пользователя класса это не волнует)
End Sub

т.е. при создание екземпляра класса ты пишешь
Dim Chk as New CheckBox

а при обьявлении обычной переменной как и в 6 васике
Dim I as integer

Создатель
Постоялец
Постоялец
 
Сообщения: 422
Зарегистрирован: 21.04.2004 (Ср) 3:32
Откуда: Новосибирск

Сообщение Создатель » 15.09.2005 (Чт) 9:14

Объявляя Dim i As Integer создаешь ссылочный тип integer

Объявляя Dim i As New Integer создаешь структуру (структуры являются типами значений)

Структуры не подвергаются сборке мусора, при копировании передаются по значению, не участвуют в наследовании, структурам нельзя задавать начальные условия(Dim i As New Integer = 6 - ошибка).

Вобщем почитай про ссылочные типы и типы значений

kroskros
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 176
Зарегистрирован: 01.08.2005 (Пн) 6:59

Сообщение kroskros » 15.09.2005 (Чт) 11:35

Спасибо.
думаю примерно понял...
просто пример я привел не удачный...
Max


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 53

    TopList