Attacher une liste a un combo

[Résolu]
Signaler
Messages postés
666
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
-
Messages postés
666
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
-
Bonjour,

Je ne parviens pas a attacher une liste a un ComboBox

Je declare une liste

class Hotel
{
  int Id;
  int Nom;
}

List <Hotel> Hotels=new List();

cmb.DataSource=Hotels;

Mais je ne sais pas comment déclarer le DisplayMember (Nom)
et le ValueMember (Id)

11 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
58
Sorry j'ai pas conservé mon teste

<hr />
-My Blog-
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
58
Bonjour,
Voici une solution:

public
struct
Hotel
{
  
public
int Id {
get;
set; }
  
public
string Name {
get;
set; }
}

var h =
new
List<
Hotel>(4)
{
  
newHotel() { Id 1, Name
"Hotel1" },
  
newHotel() { Id 2, Name
"Hotel2" },
  
newHotel() { Id 3, Name
"Hotel3" },
  
newHotel() { Id 4, Name
"Hotel4" }
};

this.comboBox.DataSource = h;

this.comboBox.DisplayMember =
"Name";

this.comboBox.ValueMember =
"Id";

<hr />
-My Blog-
Messages postés
666
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
5
Merci Bidou

Ca marche aussi avec une classe je suppose ?

En tout cas le vieux combattant du C que je suis n'a pas encore assimilé ces concept de get et set machin truc

Quelqu'un vient aussi de me dire de faire

    class Rue
    {
      public int Id;
      public string Nom;
      public override string ToString()
      {
        return Nom;
      }
    };

Ca marche aussi mais ca m'aide pas plus a comprendre le bingz
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
58
ToString est une mauvaise idée: C'est une méthode qui est au niveau de la classe object et qui sert à décrire une classe, normalement pas à la représentée visuellement par un string pour l'utilisateur. De plus, si tu fais ça dans un struct, tu vas avoir du boxing/unboxing ce qui n'est vraiment pas le pied niveau perf'.

Utilise la méthode ci-dessus (avec une classe si tu veux) mais pas ToString !
Qui t'as dit d'utiliser ça !?!!?!

<hr />
-My Blog-
Messages postés
666
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
5
Salut Bidou

QUI ? : quelqu'un sur codeprojet ?

Classe ou struct : toujours la question.
Dans les deux cas ca marche asser bien
Je n'ai pas beaucoup d'éléments (+/- 1000)

Mais peut etre que struct est plus performant dans le cas présent.
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
58
struct sera certainement MOINS performant avec toString !!!!

<hr />
-My Blog-
Messages postés
666
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
5
Ok,

Il est déja aux oubliettes, j'ai pris ta solution !

Reste classe ou struct ?
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
58
class toString : moyen, to string c'est pas fait pour etre représenté graphiquement
class avec property (premier exemple) : OK
struct avec toString: non ! ((un)boxing!)
struct avec property: pas bon pour les collections

Je fais vite qqe testes de perf' pour m'assurer que je ne raconte pas d'annerie

<hr />
-My Blog-
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
58
Bon la struct prend bien plus de place en mémoire, c'est logique, donc de ce point de vue une class c'est bien mieux 
Par contre, niveau performance j'arrive +/- à la même chose, bizarre, j'aurais pensé que ça serait plus rapide avec toString sur la class plutot que la struct, je ne comprends pas pas trop pourquoi...

<hr />
-My Blog-
Messages postés
666
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
5
Salut

<<
Bon la struct prend bien plus de place en mémoire, c'est logique, donc de ce point de vue une class c'est bien mieux 
>>

Ok mais dans quel contexte ?
Car a priori class ou struct l'information utile stoquée sera la meme
Je comprends qu'on accede aux classes via des pointeurs et que donc dans certains cas il n'y a pas recopie d'information et que dans ces cas on gagne de la place mais dans quel contexte a tu fait ton evaluation !
Messages postés
666
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
5
Pas grave !

Merci beaucoup en tout cas.

Tant que je te parle ici, j'ai du faire un roll back de mon truc de binary_stream_reader, je poste un comment dans la discussion