Surcharge de méthodes héritées

Leucistic Messages postés 61 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 16 juin 2012 - 12 sept. 2008 à 10:03
Leucistic Messages postés 61 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 16 juin 2012 - 15 sept. 2008 à 14:29
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

LUDINSKI Messages postés 441 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 22 mai 2012 8
12 sept. 2008 à 12:29
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é !!
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
13 sept. 2008 à 22:46
0
Leucistic Messages postés 61 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 16 juin 2012 1
13 sept. 2008 à 22:48
L'ouverture de l'esprit n'est pas une fracture du crâne
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
15 sept. 2008 à 11:54
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]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Leucistic Messages postés 61 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 16 juin 2012 1
15 sept. 2008 à 13:38
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
0
Leucistic Messages postés 61 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 16 juin 2012 1
15 sept. 2008 à 14:29
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
0
Rejoignez-nous