Comment lier une Liste à un ComboBox?
Je veux me connecter un BindingSource
à une liste d'objets de la classe et puis les objets de valeur à une zone de liste déroulante.
Quelqu'un peut-il suggérer comment le faire?
public class Country
{
public string Name { get; set; }
public IList<City> Cities { get; set; }
public Country()
{
Cities = new List<City>();
}
}
est ma classe et je veux lier son name
champ à un BindingSource qui pourrait être associé à une zone de liste déroulante
- Winforms ce que je veux, c'est m'aider à connecter les valeurs de données de noms de domaine de pays de l'objet reste, je vais le comprendre
Vous devez vous connecter pour publier un commentaire.
Que vous faites référence à une zone de liste déroulante, je suis en supposant que vous ne voulez pas utiliser les 2 voies de la liaison de données (si si, regardez à l'aide d'un
BindingList
)Pour trouver le pays sélectionné dans la zone de liste déroulante liée, vous feriez quelque chose comme:
Country country = (Country)comboBox1.SelectedItem;
.Si vous souhaitez que la zone de liste déroulante pour mettre à jour dynamiquement, vous aurez besoin pour vous assurer que la structure de données que vous avez défini comme
DataSource
implémenteIBindingList
; une telle structure estBindingList<T>
.Astuce: assurez-vous que vous êtes la liaison de la
DisplayMember
d'une Propriété de la classe, et non pas un champ public. Si vous classe utilisepublic string Name { get; set; }
que cela fonctionne, mais s'il utilisepublic string Name;
il ne sera pas en mesure d'accéder à la valeur et à la place d'afficher le type d'objet pour chaque ligne dans la liste déroulante.bindingSource1
s'déclaration ?comboBox1.DataSource = bindingSource1.DataSource;
correct? ou alors, il faut êtrecomboBox1.DataSource = bindingSource1;
?Pour un document d'information, il y a 2 façons d'utiliser une zone de liste déroulante/ListBox
1) Pays d'Ajouter des Objets à la propriété d'Éléments et de récupérer un Pays comme Selecteditem. Pour l'utiliser, vous devez remplacer le ToString de Pays.
2) l'Utilisation de la liaison de données, définissez la source de données à une IList (List<>) et l'utilisation DisplayMember, ValueMember et SelectedValue
Pour 2) vous aurez besoin d'une liste de pays
Et puis dans le SelectionChanged,
boom.
Essayer quelque chose comme cela:
Et si vous utilisez des Formulaires web, vous devez ajouter cette ligne:
C'est le code, je suis en utilisant maintenant.
Si vous utilisez un ToolStripComboBox il n'y a pas de source de données exposés.NET 4.0):
ToolstripComboBox.ComboBox.DataSource
. Il ressemble àToolstripComboBox
est un wrapper pour une normale deComboBox
.