2008-09-29 6 views

Répondre

0

Vous l'avez compris dans l'autre sens. Les objets de databound comme les grilles et similaires peuvent définir des listes génériques comme source de données.

Vous devez soit remplir manuellement votre liste ou utiliser une technologie qui pour vous remplit (par exemple, LINQ to SQL, NHibernate)

1

Vous ne pouvez pas. C'est parce qu'une liste n'est pas IBindableComponent. Un Windows Forms est: Voir MSDN Control Class.

11

Mirmal, je suppose que l'anglais n'est pas votre langue maternelle, cette question n'est pas très claire. Je pense que ce que vous demandez est donné une liste de votre classe comment voulez-vous lier ensuite cette liste à quelque chose (une zone de liste ou combobox etc)

est ici d'un simple extrait de code de la façon de le faire ...

private void button2_Click(object sender, EventArgs e) 
{ 
    List<MyClass> list = new List<MyClass>(); 
    list.Add(new MyClass() { FirstName = "Tim", Lastname = "Jarvis"}); 
    list.Add(new MyClass() { FirstName = "John", Lastname = "Doe" }); 

    listBox1.DataSource = list; 
    listBox1.DisplayMember = "FirstName"; // or override MyClass's ToString() method. 
} 

J'espère que cela a répondu à votre question.

1

Vous n'attribuez pas de source de données à un objet List<>. Vous pouvez cependant utiliser un List<> comme source de données pour un contrôle d'interface utilisateur.

Si vous voulez vous faire dériver de List<> et mettre en œuvre IBindableComponent qui vous permettrait de fournir des mécanismes pour la liaison de données à une liste. C'est presque certainement pas le meilleur moyen d'atteindre ce que vous voulez faire.

Edit: Si vous avez un contrôle et que vous voulez récupérer la source de données et vous le savez est un objet List<> vous pouvez simplement faire:

List<MyClass> lst = listBox1.DataSource as List<MyClass>; 
4

Commencez avec une classe simple:

// create a dummy class 
    public class MyClass 
    { 
     private string name; 
     public MyClass(string name) 
     { 
      ItemName = name; 
     } 
     public string ItemName 
     { 
      get { return name; } 
      set { name = value; } 
     } 
    } 

Créer une liste de liaison et ajouter des classes à la liste:

// create a binding list 
    BindingList<MyClass> my_list = new BindingList<MyClass>(); 

    // add some clssses to the list 
    my_list.Add(new MyClass("Item #1")); 
    my_list.Add(new MyClass("Item #2")); 

Bind la liste à la source de données listbox indiquant que la propriété de classe doit être utilisé dans l'affichage listbox:

// make the list the datasource for a listbox 
    listBox1.DataSource = my_list; 

    // this is the property of the class displayed in the listbox 
    listBox1.DisplayMember = "ItemName"; 
2

Vous pouvez envelopper votre liste dans une liste de liaison:

System.ComponentModel.BindingList<myClass> bindingList = new System.ComponentModel.BindingList<myClass>(originalList); 

Goran

Questions connexes