2010-09-03 4 views
0

J'ai une liste avec les objets de la classe Personne. J'ai mis la liste en tant que DataSource d'un ComboBox. Maintenant, lorsque j'ai défini l'élément SelectedItem de la zone de liste déroulante une nouvelle instance de classe Person, l'élément SelectedItem ne définit jamais. Pourquoi ça arrive?Comment définir SelectedValue d'une liste combinée avec un élément non disponible dans la liste

public class Person 
    { 
     public Person(string name, int age) 
     { 
      Name = name; 
      Age = age; 
     } 
     public string Name { get; set; } 
     public int Age { get; set; } 
    } 

    public List<Person> lstPerson = new List<Person>(); 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     lstPerson.Add(new Person("Name1",1)); 
     lstPerson.Add(new Person("Name2",2)); 

     comboBox1.DataSource = lstPerson; 
     comboBox1.DisplayMember = "Name"; 

     comboBox1.SelectedItem = lstPerson[1]; //If I put this line then it works 
     //comboBox1.SelectedItem = new Person("Name2", 2); // Not working if I put this line. How can I make this possible? 
    } 

Que dois-je faire pour que ce code fonctionne? J'ai posé cette question dans de nombreux forums. Je n'ai jamais eu de solution.

Répondre

0

La classe ComboBox recherche l'objet spécifié à l'aide de la méthode IndexOf. Cette méthode utilise la méthode Equals pour déterminer l'égalité.

vous pouvez remplacer Equals (obj d'objet) sur vous objet personne pour atteindre votre objectif

+0

Le ComboBox va essayer de correspondre à la valeur spécifiée avec quelque chose qui existe réellement dans son DataSource. Overriding Equals ne vous mènera nulle part. – devnull

+0

oui, vous avez raison, mais notez que Rajeesh veut juste sélectionner le deuxième élément de sa question, ("Name2", 2) déjà existant dans son DataSource – Hiber

+0

Ok. Merci beaucoup pour votre réponse. Laissez-moi examiner cela. – Rajeesh

Questions connexes