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 :

Problème de form modal et textbox


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2009
    Messages : 18
    Points : 19
    Points
    19
    Par défaut Problème de form modal et textbox
    Bonjour,

    Pour mon interface, j'ai créer une form contenant uniquement une richtextbox, celle-ci servant à afficher un texte d'aide (helpForm).
    J'ai également écrit des méthodes pour cette form, une permettant d'écrire dans la textbox et une permettant de l'effacer. Ces méthodes appellent à leur tour les méthodes de la textbox.

    Mon problème est le suivant :
    Lorsque que j'instancie cette helpForm depuis ma form principale (appuie sur le menu help ^^), l'écriture dans la textbox ne marche pas dans tous les cas.

    Losrque j'appelle la helpForm comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    private void helpToolStripMenuItem1_Click(object sender, EventArgs e)
            {
                HelpForm helpForm = new HelpForm();
                helpForm.Show();  
     
                switch (tabControl1.SelectedTab.Text)
                 {
                     case "FFT":
                         helpForm.AppendText("FFT HELP"); //test
                         break;
    //... etc
    Cela fonctionne très bien, seulement j'aimerai bloquer l'accès à ma form principale lorsque celle-ci est ouverte donc je fait comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    private void helpToolStripMenuItem1_Click(object sender, EventArgs e)
            {
                HelpForm helpForm = new HelpForm();
                helpForm.ShowDialog();  // Modif de Show en ShowDialog
     
                switch (tabControl1.SelectedTab.Text)
                 {
                     case "FFT":
                         helpForm.AppendText("FFT HELP"); //test
                         break;
    //... etc
    et la c'est le drame, l'écriture dans la textbox ne fonctionne plus ^^

    Si vous avez une explication voir une solution je suis preneur.

    Au pire des cas je ferait le blocage de la fenêtre parent "à la main" mais bon ça complique pour pas grand chose

    Voici ma classe HelpForm si jamais le problème vient de la

    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
     
    public partial class HelpForm : Form
        {
            public HelpForm()
            {
                InitializeComponent();
            }
     
            public void AppendText(string text)
            {
                this.richTextBoxHelpForm.AppendText(text);
            }
     
            public void Clear()
            {
                this.richTextBoxHelpForm.Clear();
            }
        }
    Merci d'avance pour vos réponses

    Cordialement.

  2. #2
    Membre expérimenté Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Points : 1 732
    Points
    1 732
    Par défaut
    Salut,
    Le problème viens de l'ordre dans lequel tu fait tes instructions.
    Tu appelle Show(Dialog) AVANT de remplir ta textbox.
    Déjà c'est pas terrible. Ca fonctionne avec Show tout simplement parce que c'est une méthode non bloquante.
    Avec ShowDialog c'est une autre histoire puisque c'est une méthode bloquante (principal but de cette méthode d'ailleur). Autrement dit ton programme ne sort de la méthode ShowDialog (et donc passe a la suite qui remplit la textbox) qu'une fois que .... helpForm est fermée.

    On ne fait de Show sur la fenêtre qu'une fois qu'on a fini de l'initialiser (et donc la remplir). Place ton ShowDialog après ton switch et tout sera résolut.

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2009
    Messages : 18
    Points : 19
    Points
    19
    Par défaut
    Oui c'est ça en effet
    je me sent bête de ne pas avoir pensé que la fonction ShowDialog est bloquante, aprés coup ça semble évident.

    Merci de ton aide.

    Cordialement.

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

Discussions similaires

  1. problème avec des forms Modals
    Par comodin dans le forum C++Builder
    Réponses: 0
    Dernier message: 13/11/2014, 13h07
  2. Réponses: 7
    Dernier message: 28/01/2011, 16h45
  3. [STRUTS]Problème de form
    Par sqlnet dans le forum Struts 1
    Réponses: 5
    Dernier message: 07/10/2005, 12h37
  4. [HTML] Problème de Form(s)
    Par Ghusse dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 21/09/2005, 08h24
  5. [ASP]Problème de form en html
    Par DEC dans le forum ASP
    Réponses: 2
    Dernier message: 16/08/2004, 20h29

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