2010-11-25 7 views

Répondre

12

Cela dépend de la façon dont votre tableau de liste est.

Soit le début de l'échantillon à partir d'un simple:

List<string> listToBind = new List<string> { "AA", "BB", "CC" }; 
this.listBox1.DataSource = listToBind; 

Ici nous avons une liste de chaînes, qui sera affiché comme des éléments dans la zone de liste.

alt text

Sinon, si vos éléments de liste sont plus complexes (par exemple des classes personnalisées), vous pouvez le faire de cette façon:

ayant par exemple, MyClass défini comme suit:

public class MyClass 
{ 
    public int Id { get; set; } 
    public string Text { get; set; } 
    public MyClass(int id, string text) 
    { 
     this.Id = id; 
     this.Text = text; 
    } 
} 

voici la partie de liaison:

List<MyClass> listToBind = new List<MyClass> { new MyClass(1, "One"), new MyClass(2, "Two") }; 
this.listBox1.DisplayMember = "Text"; 
this.listBox1.ValueMember = "Id"; // optional depending on your needs 
this.listBox1.DataSource = listToBind; 

Et vous obtiendrez une boîte de liste montrant seulement le texte de vos articles. Si vous définissez également ValueMember sur une propriété spécifique de votre classe, listBox1.SelectedValue contenant la valeur Id sélectionnée au lieu de l'instance de classe entière.

N.B.
Laissant DisplayMember non fixé, vous obtiendrez le résultat ToString() de vos entrées de liste comme texte d'affichage de vos articles ListBox.

alt text

+0

Y at-il un moyen de lier, mais toujours lire l'instance de classe entière? Disons que je voulais récupérer le texte sélectionné, au lieu de l'Id (tout en gardant Id comme membre de la valeur), est-ce que je pourrais le faire? – AdamMc331

+0

@ McAdam331: oui, ne mettez rien comme 'ValueMember'. De cette façon, la propriété 'listBox1.SelectedValue' sera de type' MyClass'. – digEmAll

+0

Génial! J'espérais que vous utilisiez toujours votre compte, je peux vraiment l'appliquer à un projet sur lequel je travaille. – AdamMc331

Questions connexes