Maison >développement back-end >C++ >Comment lier une liste d'objets personnalisés à une ComboBox et récupérer l'élément sélectionné ?

Comment lier une liste d'objets personnalisés à une ComboBox et récupérer l'élément sélectionné ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-13 09:47:43889parcourir

How to Bind a List of Custom Objects to a ComboBox and Retrieve the Selected Item?

Lier une liste d'objets à une option de liste déroulante

Vous avez besoin d'une solution pour lier une liste d'objets personnalisés à une liste déroulante et afficher ses propriétés spécifiées sous forme d'étiquettes d'options. En guise de toile de fond, considérons les cours suivants :

<code class="language-c#">public class Country
{
    public string Name { get; set; }
    public IList<City> Cities { get; set; }

    public Country()
    {
        Cities = new List<City>();
    }
}</code>

Guide étape par étape

Pour créer une liaison, suivez ces étapes :

  1. Créer une liste d'objets personnalisés (par exemple, Pays) :

    <code class="language-c#"> List<Country> countries = new List<Country> { new Country { Name = "UK" }, new Country { Name = "Australia" }, new Country { Name = "France" } };</code>
  2. Initialisez un BindingSource et attribuez son DataSource à List :

    <code class="language-c#"> var bindingSource1 = new BindingSource();
     bindingSource1.DataSource = countries;</code>
  3. Définissez le DataSource de la zone de liste déroulante sur le DataSource du BindingSource :

    <code class="language-c#"> comboBox1.DataSource = bindingSource1.DataSource;</code>
  4. Spécifiez la propriété à afficher dans la liste déroulante comme DisplayMember :

    <code class="language-c#"> comboBox1.DisplayMember = "Name";</code>
  5. Spécifie que la valeur renvoyée par la zone de liste déroulante utilisera la propriété comme ValueMember :

    <code class="language-c#"> comboBox1.ValueMember = "Name";</code>

Récupérer les éléments sélectionnés

Pour obtenir l'objet Pays sélectionné dans une liste déroulante, transtypez ses éléments sélectionnés vers le type correspondant :

<code class="language-c#">Country selectedCountry = (Country)comboBox1.SelectedItem;</code>

Mises à jour dynamiques

Si vous avez besoin que la zone de liste déroulante se mette à jour automatiquement, assurez-vous que DataSource implémente l'interface IBindingList. BindingList est une implémentation qui prend en charge les modifications de données en temps réel.

Afficher les objets et les propriétés

Notez que DisplayMember doit référencer une propriété dans la classe (par exemple, "Name"). Si vous utilisez un champ (par exemple, "Nom ;"), la valeur ne sera pas accessible et la liste déroulante affichera le type d'objet au lieu de la valeur de la propriété.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn