2010-08-13 8 views
3

J'ai une liste déroulante dans une boîte de dialogue. J'ai besoin de remplir ce combo avec la liste <> du formulaire parent. Comment faire cela car je ne peux pas passer la liste <> via le constructeur de la boîte de dialogue.Transmission des données du parent à la boîte de dialogue

frmChild frm = new frmChild(); 
frm.ShowDialog(); 

Répondre

7

Vous pouvez ajouter une propriété ou une méthode sur votre formulaire, qui prend la List<items> et renseigne le ComboBox.

Par exemple:

List<ItemType> items = GetItemsForFormsComboBox(); 
frmChild frm = new frmChild(); 
frm.SetComboItems(items); 
frm.ShowDialog(); 

// in the form 
public void SetComboItems(List<ItemType> items) 
{ 
    foreach(var item in items) 
    { 
     myCombo.Add(/* construct combo item and use item to populate it here */); 
    } 
} 
1

Vous pouvez faire une propriété de votre boîte de dialogue pour obtenir/écrire la liste <> données.

0

Vous pouvez ajouter une propriété ou une méthode sur votre formulaire, qui prend la liste et renseigne le ComboBox

surchargez Puis le constructeur.

public class ComboBoxWindow : Window 
{ 
    public ComboBoxWindow (Window origin) 
    { 
     // Now you can access your parent window's List<>. 
    } 

    // If necessary you can keep a reference to it. 
    private Window _origin; 
} 

OU

public class ComboBoxWindow : Window 
{ 
    // If necessary you can keep a reference to it. 
    private IList _items; 

    public ComboBoxWindow (IList _items) 
    { 
     // Now you can access your list directly. 
    } 
} 

Les deux voies sont d'accord.

{profiter}

+0

La première option est la meilleure idée du monde, ayant une fenêtre enfant « Grok » de nouveau dans son parent est juste d'avoir des ennuis si vous essayez de réutiliser la fenêtre ailleurs, la deuxième option, OU une propriété/méthode est de loin la meilleure option – Rob

+0

Vous avez raison, je veux dire que vous obtenez des frais supplémentaires en utilisant la première méthode. Néanmoins, j'ai utilisé la première méthode une fois avec une fenêtre personnalisée pour définir un effet de flou sur l'appelant lorsque la fenêtre était ouverte. Cela a bien fonctionné. –

Questions connexes