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 :

[C#] Savoir si un contrôle existe


Sujet :

Windows Forms

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut [C#] Savoir si un contrôle existe
    Bonjour !!

    J'ai besoin de savior si un contrôle existe dans un panel, afin de le suppimer et d'ajouter un autre contrôle.
    Je n'ai trouvé que cette solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
                        try 
                        {
                            this.Auto = new Auto();
                            this.Auto.Name = "CONTROL_A";
                            this.splitContainer2.Panel2.Controls.Remove(this.splitContainer2.Panel2.Controls.Find("CONTROL_M",false)[0]); 
                        }
                        catch (Exception E) 
                        {
                            this.splitContainer2.Panel2.Controls.Add(Auto);
                        }
    this.splitContainer2.Panel2.Controls.Add(Auto);
    Si le contrôle M existe on supprime et on ajoute le nouveau contrôle (A) sans passer par catch (car il n'y a pas d'erreur).
    Sinon, c'est que le contrôle M n'existe pas, alors on passe par catch pour ajouter le contrôle A.


    Ce n'est pas propre du tout je crois !! et ça me procure parfois des erreurs !!

    Comment faire pour savoir si un contrôle existe ??
    Merci pour vos réponses !!!
    tout le monde est d'accord pour critiquer la pensée unique

  2. #2
    Membre éprouvé Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Points : 1 256
    Points
    1 256
    Par défaut
    Si t'as déjà une référence au controle à supprimer, tu peux utiliser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (this.splitContainer2.Panel2.Controls.Contains(monControl))
        this.splitContainer2.Panel2.Controls(monControl);

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    Salut Guitoux !

    Merci, j'ai pu enlever le "try catch" avec ce que tu m'as dit.

    Mais j'ai un problème ! toujours le même.

    Je t'explique:
    J'ai une form principale qui est divisée en deux avec splitContainer.
    panel1: partie de gauche
    panel2: partie de droite

    sur le panel 1, j'ai deux radiobuttons qui me permettent de remplacer un composant par un autre dans le panel2

    Le radiobutton 1, lorsqu'il est sélectionné, supprime le composant auto(contrôle utilisateur que j'ai créé nommé auto) s'il existe dans le panel et ajoute le contôle utilisateur nommé manual.
    Le radiobutton 2, lorsuq'il est sélectionné, supprimer le composant manual s'il existe dans le panel et ajoute le contrôle utilisateur auto.

    Mais j'ai un problème d'affichage !!! Je le contrôl manual n'a pas l'air de vouloir se supprimer correctement quand le radiobutton2 est sélectionné. Je vois un tout petit bout du contôle auto apparaître mais le contrôle manual est toujours largement visible !! Même en faisant un update du panel et de la form !!

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
            private void Mode(string MyMode)
            {
                switch (MyMode)
                {
                    case "RB_MODE_AUTO": 
                    {
                        if (this.splitContainer2.Panel2.Controls.Contains(Manual)) 
                        {
                            this.splitContainer2.Panel2.Controls.Remove(Manual);
                        }
                        this.Auto = new Auto();
                        this.Auto.Name = "CONTROL_A";
                        this.splitContainer2.Panel2.Controls.Add(Auto);
                        this.panel1.Controls.Find("WB_L_MODE", false)[0].Text = "Automatic";
     
                        this.Update();
                        this.splitContainer2.Panel2.Update();
                    }; break;
                    case "RB_MODE_MANUAL": 
                    {
                        if (this.splitContainer2.Panel2.Controls.Contains(Auto)) 
                        {
                                this.splitContainer2.Panel2.Controls.Remove(Auto);                        
                        }
                        this.Manual = new Manual();
                        this.Manual.Name = "Control_M";
                        this.splitContainer2.Panel2.Controls.Add(Manual);
                        this.panel1.Controls.Find("WB_L_MODE", false)[0].Text = "Manual";
     
                        this.Update();
                        this.splitContainer2.Panel2.Update();
                    }; break;
                default: { new Error("Invalid settings definition", "Mode " + MySettings.Mode + " is invalid"); }; break;
     
                }
            }
     
            private void WB_RB_MANUAL_CheckedChanged(object sender, EventArgs e)
            {
                RadioButton RBtmpMode = (RadioButton)this.panel1.Controls.Find("WB_RB_MANUAL", true)[0];
                if (RBtmpMode.Checked)
                {
                    Mode("RB_MODE_MANUAL");
                }
            }
     
            private void WB_RB_AUTO_CheckedChanged(object sender, EventArgs e)
            {
                RadioButton RBtmpMode = (RadioButton)this.panel1.Controls.Find("WB_RB_AUTO", true)[0];
                if (RBtmpMode.Checked)
                {
                    Mode("RB_MODE_AUTO");
                }
     
            }
    Y' a t'il quelque chose qui te choque dans ce code ? As tu déjà rencontré ce problème ?
    tout le monde est d'accord pour critiquer la pensée unique

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    Ok, j'ai bien relu en écrivant ce post, car je bloquais vraiment.
    Mais la nuit et le forum doivent porter conseil, j'ai fini par trouver que dans un autre bout de code, j'appelais deux fois la même fonction, mon contrôle était créé plusieurs fois !!
    Je suis sur que ça vient de là !!

    Merci, encore une fois, pour ton aide Guitoux !!!
    tout le monde est d'accord pour critiquer la pensée unique

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6]Comment savoir si un répertoire existe
    Par pendragon dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 30/09/2016, 06h42
  2. Savoir si un enregistrement existe déjà dans une table?
    Par danje dans le forum Langage SQL
    Réponses: 8
    Dernier message: 20/08/2005, 10h32
  3. Savoir si une table existe
    Par Sydaze dans le forum Bases de données
    Réponses: 4
    Dernier message: 07/06/2005, 11h22
  4. [FSO] Savoir si un dossier existe
    Par Johnbob dans le forum ASP
    Réponses: 2
    Dernier message: 11/02/2005, 11h34
  5. [URL] Comment savoir si une URL existe?
    Par jse dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 07/10/2004, 15h33

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