2010-01-28 3 views
2

J'ai un tableau d'objets, par exemple des personnes et des informations à leur sujet. Comment puis-je déterminer qui a été sélectionné dans la zone de liste où seul le prénom et le nom sont affichés? Est-il même possible d'associer un élément de la liste avec un élément du tableau? Évidemment je ne peux pas compter sur SelectedIndex parce que quand les noms dans la liste sont filtrés cela ne fonctionne plus.Détermination de l'objet sélectionné à l'aide d'une zone de liste

Dans mon application j'ai une liste où sont les noms des personnes et quand je clique sur une personne dans la liste, je veux voir leurs detais (adresse/contacs/misc). Et le problème est lorsque deux personnes partagent le même nom.

+2

Ne pouvez-vous pas simplement placer les objets eux-mêmes dans le ListBox? –

+0

oui et non, si vous ajoutez un objet directement dans la listbox, la listbox appelle la méthode ToString() pour l'objet donné. Et puisque j'ai outrepassé cette fonction il montrera juste le nom et le prénom – Gabriel

Répondre

3

Vous pouvez utiliser le ListBox.SelectedItem comme ça ... Si vous voulez, vous pouvez créer une nouvelle propriété à concaténer le Nom et Prénom et l'utiliser comme DisplayMember

public class Person 
{ 
    public string FirstName { get; set; } 
    public string Surname { get; set; } 
} 

var people = new[] 
{ 
    new Person{FirstName = "Peter", Surname = "Pan"}, 
    new Person{FirstName = "Simon", Surname = "Cowell"} 
}; 

var listbox = new ListBox 
{ 
    DisplayMember = "FirstName", 
    ValueMember = "FirstName", 

    DataSource = people 
}; 

var person = listbox.SelectedItem as Person; 
+0

ceci semble que cela pourrait fonctionner ... je vérifierai le matin. – Gabriel

+0

Oui merci ça fonctionne ... Et avez-vous une idée de comment pourrais-je filtrer ces personnes? n'affiche que les personnes dont le prénom commence par "Pe". – Gabriel

+0

j'ai fait le tour de la fonction de recherche :) – Gabriel

0

Je suggère d'ajouter une clé unique votre liste d'objets. Vous pourrez ensuite utiliser la clé unique comme valeur pour les listitems, que vous pourriez également obtenir lorsqu'un élément est sélectionné, et que vous pourriez utiliser pour identifier l'élément dans votre liste d'objets.

Questions connexes