none
[Visual Studio C# 2005 Express] Définir l'affichage selon le choix d'une ListBox RRS feed

  • Question

  • Bonjour!

    Je découvre visual studio et le C# et me voilà à faire une application où je bloque dès les premiers pas.
    J'ai commencé à faire une interface graphique avec le Simple Editor.

    J'aimerais pouvoir adapter l'affichage de la fenêtre selon ce que l'utilisateur a choisi dans une listBox.

    Par exemple:
    La fenêtre contient uniquement une listBox.

    L'utilisateur choisi l'option A.
    Alors, un nouvel élément e1 s'affiche dans la même fenêtre.

    Si l'utilisateur choisi maintenant l'option B.
    Alors, e1 disparaît et un nouvel élément e2 s'affiche dans la même fenêtre.

    Je voudrais pouvoir faire cela sans avoir besoin de rediriger vers une autre fenêtre.
    Cela fait un moment que je cherche mais je ne trouve rien. Je m'y prends mal?

    Voilà!
    J'espère que quelqu'un pourra m'aider à trouver une solution Smile

    Merci!


    lundi 31 mars 2008 22:36

Réponses

  • Bonjour,

     

    Si j'ai bien compris votre post d'origine voici ce qu'il faut faire :

     

    Code Snippet

    public class MaFenetre : Form

    {

    private Control controleAffiché;

     

    ......

     

    private void TraitementOnSelectedIndexChanged(object sender, EventArgs e)

    {

    //Si l'utilisateur choisi la première option on affiche un Bouton.

    if (this.listBox.SelectedIndex == 0)

    this.AfficherControle(new Button());

    //Si c'est le suivant on affiche un ListBox...

    else if (this.listBox.SelectedIndex == 1)

    this.AfficherControle(new ListBox());

    }

     

    private void AfficherControle(Control c)

    {

    //Detruire le controle précédent si déjà existant

    if (this.controleAffiché != null)

    {

    this.Controls.Remove(this.controleAffiché);

    this.controleAffiché.Dispose();

    }

     

    //On affiche le controle à une certaine position

    this.controleAffiché = c;

    this.controleAffiché.X = 200;

    this.controleAffiché.Y = ....

    ....

    this.Controls.Add(this.controleAffiché);

    }

    }

     

     

     

    Cordialement

    jeudi 3 avril 2008 08:12
    Modérateur

Toutes les réponses

  • Bonjour,

     

    Le plus simple est de traiter pour votre ListBox, l'événement SelectedIndexChanged...

    Et en fonction de l'index courant de votre ListBox (via la propriété ListBox.SelectedIndex), vous créez un nouvel élément et l'ajoutez à la fenêtre (vous prendrez soin de garder ce contrôle dans un variable membre de votre fenêtre, afin de le détruire plus-tard...).

     

    Cordialement

     

    mercredi 2 avril 2008 21:16
    Modérateur
  • Bonsoir,

    Je réussi à rajouter un élément. Cependant, je ne comprends pas ce que vous voulez dire par "garder ce controle dans une variable membre de la fenetre"...

    Merci de votre réponse Smile

    mercredi 2 avril 2008 22:45
  • Bonjour,

     

    Si j'ai bien compris votre post d'origine voici ce qu'il faut faire :

     

    Code Snippet

    public class MaFenetre : Form

    {

    private Control controleAffiché;

     

    ......

     

    private void TraitementOnSelectedIndexChanged(object sender, EventArgs e)

    {

    //Si l'utilisateur choisi la première option on affiche un Bouton.

    if (this.listBox.SelectedIndex == 0)

    this.AfficherControle(new Button());

    //Si c'est le suivant on affiche un ListBox...

    else if (this.listBox.SelectedIndex == 1)

    this.AfficherControle(new ListBox());

    }

     

    private void AfficherControle(Control c)

    {

    //Detruire le controle précédent si déjà existant

    if (this.controleAffiché != null)

    {

    this.Controls.Remove(this.controleAffiché);

    this.controleAffiché.Dispose();

    }

     

    //On affiche le controle à une certaine position

    this.controleAffiché = c;

    this.controleAffiché.X = 200;

    this.controleAffiché.Y = ....

    ....

    this.Controls.Add(this.controleAffiché);

    }

    }

     

     

     

    Cordialement

    jeudi 3 avril 2008 08:12
    Modérateur