Gotcha de liaison de données WinForms ComboBox

Supposons que vous fassiez quelque chose comme ce qui suit

List<string> myitems = new List<string>
{
    'Item 1',
    'Item 2',
    'Item 3'
};

ComboBox box = new ComboBox();
box.DataSource = myitems;

ComboBox box2 = new ComboBox();
box2.DataSource = myitems

Nous avons donc maintenant 2 zones de liste déroulante liées à ce tableau, et tout fonctionne bien. Mais lorsque vous modifiez la valeur d'une zone de liste déroulante, les DEUX zones de liste déroulante sont remplacées par celle que vous venez de sélectionner.

Maintenant, je sais que les tableaux sont toujours passés par référence (j'ai appris cela quand j'ai appris le C :D), mais pourquoi diable les zones de liste déroulante changeraient-elles ensemble ? Je ne crois pas que le contrôle de la zone de liste déroulante modifie du tout la collection.

En tant que solution de contournement, cela n'atteindrait-il pas la fonctionnalité attendue / souhaitée

ComboBox box = new ComboBox();
box.DataSource = myitems.ToArray();
请先 登录 后评论

1 réponses

TheEmirOfGroofunkistan

Cela pourrait être juste une faute de frappe, mais dans le code que vous avez fourni, vous ne faites référence qu'à la première zone de liste déroulante lors de la définition de la source de données :

ComboBox box = new ComboBox();
box.DataSource = myitems;

ComboBox box2 = new ComboBox();
**box**.DataSource = myitems

La source de données pour box2 n'est pas définie.

请先 登录 后评论
  • 18 abonnés
  • 0 favoris,535 Feuilleter
  • Darren Kopp posée à 2022-12-11 04:59