Ajouter un commentaire

molo2003
Dans WinForm: impossible d'afficher une textbox.

Bonjour à tous;
Suis plutôt novice en C#, mais suis parvenu à faire un petit projet de sauvegarde de répertoires vers un autre disque dur ...
Je vais essayé d'etre bref: Dans ma WinForm, j'ai deux ListBox où je choisis le Dir origine et le Dir destination (sur des disques differents)...Une fois mon choix effectué, je lance l'operation de sauvegarde sur un thred secondaire... c'est lui qui ecrit dans une autre ListBox le détail du déroulement des opérations: création ou suppression de repertoires, copie ou suppression de fichiers .... et tout cela fonctionne à merveille.
Mais je voudrai améliorer le confort de l'utisateur en le prevenant lors d'une copie de gros fichiers (video)... pour le faire patienter et lui donner l'information de copie ...
Ma première idée était d'afficher un control "textbox" et lui renvoyer l'info de la copie (Visible=true en debut de copie .. et Visible = false en fin de copie ...).Malgré la bonne éxécution du prog, aucun " textbox" ne s'affiche (j'imagine qu'il s'affiche derrière la ListBox où sont historisés le déroulement des opérations). Alors comment le faire afficher en premier plan, visible par l'utilisateur, pour info de copie ???
Ma seconde idée etait d'afficher une "MessageBox" avec la même info pour l'utisateur. Cette solution fonctionne mais je voudrais m'affranchir du click opérateur puisque le nombre de copie peut etre conséquent. Est il possible d'afficher une "MessageBox" durant quelques secondes sans intervention de l'utilisateur???? La première solution est celle que j'adopterai si ca marche...

Je vous donne le code de ma méthode dont le principe est :
- Premier appel de la méthode au début de la copie de fichier ==> affichage de la "textbox" au premier plan informant l'utilisateur.
- Déroulement de l'opération de copie de fichier par la méthode Fille::Copy(...).
- Deuxième appel de la méthode (txt = "f_e_r_m_e_r" ), en fin de copie qui doit fermer la "textbox".

public: void affich_label_de_thread( String^ txt)
{


      if (this->textbox_thread->InvokeRequired)
      {
         MonDelegateHandler^ del_async_1 = gcnew MonDelegateHandler(this, &Form1::affich_label_de_thread);
        this->textbox_thread->Invoke(del_async_1, txt);
       }
      else
       {
            if (txt->String::Contains("f_e_r_m_e_r"))
             {
                 this->textbox_thread->Visible = false;
             }
             else
               {
                      //MessageBox::Show(txt," Patience !!!");
                      this->textbox_thread->Enabled;
                      this->textbox_thread->Visible = true;
                     this->textbox_thread->Text = txt;
               }    // fin du else

         } // fin du else

} //fin de la methode

Si je décoche MessageBox::Show la box s'affiche bien mais je veux affranchir l'utilisateur d'un click sur un bouton. Mais tel que, la textbox ne s'affiche pas.

Enespérant avoir été assez clair, Grand merci d'avance pour votre aide.
(Suis désolé, je n'ai pas réussi à mieux concentrer mon code , la fonction [IDENT] de l'éditeur ??? Dites moi comment procéder à l'avenir)

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 N   N   AA   U   U  RRRR   K  K 
NN N A A U U R R K K
N N N AAAA U U RRRR KK
N NN A A U U R R K K
N N A A UUU R RR K K