IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Relier des données sur des éléments d'une form


Sujet :

Windows Forms

  1. #1
    Membre du Club Avatar de Takumi
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2009
    Messages : 163
    Points : 62
    Points
    62
    Par défaut Relier des données sur des éléments d'une form
    Bonjour,

    Je développe actuellement une petite application sous VS2003, un exercice que l'ont fait en cours.

    Il s'agit d'une gestion d'établissement et d'élève dans cette établissement. J'ai donc une collection qui contient des objet de type école. Il s'agit d'une classe que l'on a crée. Cette classe contient elle une collection avec des objets de type élève, qui est aussi une classe.

    Sur ma form, j'ai une combobox et une listbox. Je voulais pouvoir relier la DataSource de mes éléments aux différentes collection. La combobox doit contenir les écoles, et quand on en séléctionne une la listbox est remplis du nom des élèves.

    Pour le moment j'ai réussi a relier ma collection d'école avec la combobox, j'ai surchargé la méthode ToString() dans ma classe école pour afficher le nom de l'école et dans la méthode Load de ma form j'ai relié comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.cbEcole.DataSource = maCollection;
    Ensuite ce que je voudrais pouvoir faire c'est la même chose pour la listbox mais cette fois avec la collection d'élève de l'école selectionné. J'ai réussi à le faire mais cela en crée une méthode pour l'événement selectedIndexChanged de la combobox et en rendant ma collection d'élève public alors que je voulais la laisser private.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void cbEcole_SelectedIndexChanged(object sender, System.EventArgs e)
    {
    	this.lstPersonne.DataSource = ((ecole)this.cbEcole.SelectedValue).T;
    }
    Je voulais savoir si il était possible de faire ça sans passer par une méthode pour un évenement de la combobox, juste en mettant quelques petites lignes dans la méthode load de la form, un peu comme j'ai fait avec la combobox.

    J'ai une autre question. Je possède des boutons sur ma form. Je voudrais pouvoir les rendre accessible ou non selon qu'il y a un élève sélectionné dans ma listbox. Je peux le faire toujours dans une méthode pour l'événement selectedIndexChanged, je test si l'index vaut -1 et je grise ou non les boutons. Mais je voulais savoir si il était possible pour le bouton de "surveiller" la listbox et se rendre accessible ou non selon ce qui est sélectionné.

    Je vous remercie d'avance pour votre aide.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 311
    Points : 337
    Points
    337
    Par défaut
    Si tu veux laisser ta collection d'élèves private, tu crées une fonction pour ta classe Ecole, qui va prendre en paramètre une listbox, et tu fais l'affectation du datasource de la listbox dans cette fonction.

    Pour le bouton, non ce n'est pas possible (mais en WPF oui)

  3. #3
    Membre du Club Avatar de Takumi
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2009
    Messages : 163
    Points : 62
    Points
    62
    Par défaut
    Bonjour,

    Même si je crée une fonction dans ma classe ecole pour affecter ma collection à la datasource de ma listbox, pour l'appeler je devrais tout de même créer une fonction pour l'évenement selectedIndexChanged qui fera appelle à cette fonction dans la classe ecole?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 311
    Points : 337
    Points
    337
    Par défaut
    Ah bah oui, bien sûr

    Tu ne peux pas être au courant que le selectedIndex de ton combo a changé sinon

  5. #5
    Membre du Club Avatar de Takumi
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2009
    Messages : 163
    Points : 62
    Points
    62
    Par défaut
    Bonjour,

    Merci pour ta réponse, cela m'a aidé.

    Je voulais aussi relier la propriété enabled d'un bouton à la valeur du selectedIndex de ma listBox pour le rendre accessible ou non selon que quelque chose soit sélectionné.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.cmdAjouter.DataBindings.Add(new Binding("Enabled",this.cbEcole,"SelectedIndex"));
    Cependant j'ai un petit problème quand le selectedIndex est le 1er donc celui qui vaut 0, il est interprété comme false. Alors que le mieux aurait été le selectedIndex qui vaille -1, étant donné que c'est celui qui signifie aucun objet sélectionné dans la liste.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 311
    Points : 337
    Points
    337
    Par défaut
    Je ne sais pas comment tu peux faire en utilisant les DataBindings, mais tu peux aussi faire comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmdAjouter.Enabled = cbEcole.SelectedIndex > -1;

Discussions similaires

  1. Enregister des données sur deux tables dans une base Access
    Par aziz-be dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 23/09/2012, 11h46
  2. [Débutant] Effectuer des tests sur des données
    Par Domino5731 dans le forum Signal
    Réponses: 5
    Dernier message: 02/05/2012, 10h33
  3. Insérer des données sur plusieurs lignes dans une seule en SQL
    Par nathantahiti dans le forum Développement
    Réponses: 1
    Dernier message: 03/08/2011, 10h47
  4. Réponses: 9
    Dernier message: 26/03/2011, 09h46
  5. Etablir des statistiques sur des données
    Par tidav112 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 24/02/2009, 16h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo