2010-10-07 6 views
-2

Je viens de créer un "Usercontrol" dans WINFORMS- il contient juste un bouton avec un peu de style.Pouvons-nous créer un tableau 1D de UserControl. ..?

Et je dois utiliser la même chose que tableau (10) et le charger dans un formulaire.

Ex: 

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

Voici mon nom UserControl est ucSpecialButton

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

'Contrôle [] foo = nouveau contrôle [10];'. Ou est-ce que je manque quelque chose? Est-ce vraiment ce que tu veux? –

Répondre

2

Oui, vous pouvez.

Control[] controls = new Control[10]; 

Alors, quel est le problème?

3

Avec les mots de MAKKAM: Oui, vous pouvez. Je suppose que vous ne savez pas vraiment si vous pouvez ajouter un nombre dynamique de contrôles à un formulaire, car dans le concepteur vous ne pouvez pas définir de tableaux, il suffit de faire glisser un certain nombre de contrôles sur le formulaire.

Toutefois, Visual Studio génère simplement du code en arrière-plan qui ajoute ces contrôles à une collection. Vous pouvez tout aussi bien écrire votre propre code pour ajouter dynamiquement un nombre arbitraire de UserControls à la collection. Il suffit de regarder le fichier .designer.cs des formulaires pour voir comment cela fonctionne.

Prendre le tableau de MAKKAM controls il pourrait ressembler à ceci, par exemple .:

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. 
    } 
} 
0

Je viens de remarquer que vous avez modifié votre question. Si je me trompe pas, la seule chose que vous êtes absent est maintenant (je suis un gars C#, peut-être qu'il ya des failles dans le code VB.NET suivant):

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

Pour le code, vous avez collé dans votre question ne crée pas les boutons encore, il alloue seulement la mémoire pour le tableau:

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

New dans cet endroit signifie pour créer un nouveau tableau pour les références, pour ne pas créer de nouveaux objets. ucSpecialButton(...) dans ce lieu n'est pas le constructeur d'un objet. Au lieu de cela, il indique seulement le type d'objet pour lequel vous voulez préparer le tableau. Vous pouvez IMHO aussi bien écrire New Button(...).

Soit dit en passant: à mon humble avis, il devrait être

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

Sans - 1. Dans la boucle for cependant, le - 1 est correct (un tableau de taille 10 va de 0..9).

+0

Yup u r rite mais ..! Je ne sais pas ateast déclarant tableau. C'est pourquoi posté cette question.? – pvaju896

+0

essayez de supprimer le '{}' et dites "Nouveau bouton" au lieu de "Nouveau ucSpecialButton". Mais avec les informations de rechange que vous fournissez, il est vraiment difficile de vous aider. – chiccodoro