Surcharge de méthodes héritées

Signaler
Messages postés
61
Date d'inscription
mercredi 24 septembre 2008
Statut
Membre
Dernière intervention
16 juin 2012
-
Messages postés
61
Date d'inscription
mercredi 24 septembre 2008
Statut
Membre
Dernière intervention
16 juin 2012
-
Bonjour,

J'ai 2 questions à vous poser :
1°/
    J'ai codé un objet qui hérite de Form.
    Je n'arrive pas à trouver sur internet la facon de surcharger une méthode héritée (je ne connais peut-être pas le       terme approprié).
    Je m'explique, je souhaiterais surchargé la méthode ShowDialog() pour lui passer en argument une textBox.

2°/
    Lorsque je suis dans le MainForm, si je fais :
form2.textBox.Visible = true;
form2.ShowDialog();

A l'ouverture de mon form2, ma textBox n'est pas Visible.

    Pareillement, si je met (graphiquement) la propriété Visible de ma textBox a true, elle apparait bien, mais quand je suis dans mon form2 et que je fais :
textBox.Visible = false;

La textBox est toujours Visible.

Quelqu'un a-t-il une idée ???

Merci d'avance.

L'ouverture de l'esprit n'est pas une fracture du crâne

6 réponses

Messages postés
441
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
22 mai 2012
7
Salut,

Sans surcharger ShowDialog(), il te reste au moins 2 façons de faire :

1) En surchargeant le constructeur de Form2 :

        public Form2( bool showTextBox )
        {
            InitializeComponent();

            textBox1.Visible = showTextBox;
        }

        Du coup, côté MainForm :

        Form2 form2 = new Form2( false );
        form2.ShowDialog( this );

        Seulement, il te faut ré-instancier ton Form2 à chaque fois que tu souhaites l'afficher.

2) En ajoutant une propriété dans Form2 permettant de changer la visibilité de ton contrôle :

        public bool TextBoxVisibility
        {
            get
            {
                return textBox1.Visible;
            }
            set
            {
                textBox1.Visible = value;
            }
        }








        Du coup, côté MainForm :


        Form2 form2 = new Form2();
        form2.



TextBoxVisibility = false;






        form2.ShowDialog( this );

        Et là, tu peut réutiliser ton instance de Form2 à volonté !!
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Messages postés
61
Date d'inscription
mercredi 24 septembre 2008
Statut
Membre
Dernière intervention
16 juin 2012
1
L'ouverture de l'esprit n'est pas une fracture du crâne
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
ou tout simplement :

public new DialogResult ShowDialog(bool showTextBox) {
    this.textBox2.Visible = showTextBox;
    return this.ShowDialog();
}

public new DialogResult ShowDialog(bool showTextBox, Form parentForm) {

    this.textBox2.Visible = showTextBox;

    return this.ShowDialog(parentForm);

}

Sébastien FERRAND (blog)
Consultant Sénior
[Microsoft Visual C# MVP]
Messages postés
61
Date d'inscription
mercredi 24 septembre 2008
Statut
Membre
Dernière intervention
16 juin 2012
1
Toujours le même problème, même avec ton code sebmafate :

en mode débuggeur, la propriété Visible de ma textbox passe à true comme je le demande, et elle ne s'affiche pourtant pas.

L'ouverture de l'esprit n'est pas une fracture du crâne
Messages postés
61
Date d'inscription
mercredi 24 septembre 2008
Statut
Membre
Dernière intervention
16 juin 2012
1
Bon et bien ca restera un mystère ... J'ai dû mal setter une propriété quelque part. J'ai refait mon form, et cette fois ci, ca a l'air de fonctionner.

L'ouverture de l'esprit n'est pas une fracture du crâne