Можем ли мы создать 1-D массив UserControl...? - PullRequest
0 голосов
/ 07 октября 2010

Я только что создал "Usercontrol" в WINFORMS - он просто содержит 1 кнопку с некоторым стилем.

И мне нужно использовать то же самое, что и array (10), и загрузить его в форму.

Ex:

Dim myButton() As Button = New ucSpecialButton(dataset4Category(i).Tables(0).Rows.Count - 1) {}

Здесь мое имя пользователя управления ucSpecialButton

can we create a ONE-Dimensional Array of a WINFORM usercontrol.?

Ответы [ 3 ]

3 голосов
/ 07 октября 2010

Со словами МАККАМ: Да, вы можете. Я предполагаю, что вы на самом деле не уверены, можете ли вы добавить динамическое число элементов управления в форму, потому что в конструкторе вы не можете определить какие-либо массивы, вы просто перетаскиваете определенное количество элементов управления на форму.

Однако фактически Visual Studio просто генерирует некоторый код в фоновом режиме, который добавляет эти элементы управления в коллекцию. Вы также можете написать свой собственный код, чтобы динамически добавлять произвольное количество UserControls в коллекцию. Просто посмотрите на файл .designer.cs форм, чтобы увидеть, как он работает.

Принимая массив MAKKAM controls это может выглядеть так, например ::

public MyForm()
{
    InitializeComponent(); // this is the call to the auto-generated code

    // Here you could add you own code:
    foreach (Control control in controls)
    {
        this.Controls.Add(control); // this is how to add a control to the form.
    }
}
2 голосов
/ 07 октября 2010

Да, вы можете.

Control[] controls = new Control[10]; 

Итак, в чем проблема?

0 голосов
/ 11 октября 2010

Я только что заметил, что вы редактировали свой вопрос.Если я правильно понял, единственное, чего вам сейчас не хватает - это (я парень на C #, возможно, в следующем коде VB.NET есть некоторые недостатки):

for i = 0 to dataset4Category(i).Tables(0).Rows.Count - 1
    myButton(i) = New ucSpecialButton();
    // ... specific button properties ...
next

Для,код, вставленный в ваш вопрос, еще не создает кнопки, он только выделяет память для массива:

Dim myButton() As Button = New ucSpecialButton(
    dataset4Category(i).Tables(0).Rows.Count - 1) {}

New в этом месте означает создание нового массива для ссылок, а несоздавать новые объекты.ucSpecialButton(...) в этом месте не является конструктором объекта.Вместо этого он обозначает только тип объекта, для которого вы хотите подготовить массив.ИМХО точно так же можно написать New Button(...).

Кстати: ИМХО это должно быть

`New ucSpecialButton(dataset4Category(i).Tables(0).Rows.Count)`

Без - 1.Однако в цикле for значение - 1 является правильным (массив размером 10 равен 0..9).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...