Une appli, plusieurs fenêtres, l'intérieur est "blanc"

Utilisateur anonyme - 1 juin 2004 à 14:35
fdouieb Messages postés 264 Date d'inscription vendredi 12 décembre 2003 Statut Membre Dernière intervention 12 juin 2013 - 1 juin 2004 à 16:36
Bonjour, je débute en C#.

J'ai fait une petite appli avec une fenêtre principale, qui doit recevoir plein d'informations, informations qui sont calculées au lancement du programme. Ca prend environ 10-15 secondes. Tout marche niquel.

Maintenant, mon problême.

Je veux rajouter une sorte de petite fenêtre de progression, qui indique à l'utiliseur: "on traite les fichiers X/Y" (par exemple), en gros, pour montrer que ça travaille bien derrière.
J'ai donc créé (File --> Add New Item --> Windows Form) une petite fenêtre avec 2 textes dedans (WIP.cs). Dans mon WIP (Work In Progress).cs, j'ai appellé ça namespace WIP. Et ma classe c'est WIP.

Dans mon appli principale, j'ai fait:

using WIP; // forcément
WIP myWIP; //déclaration
myWIP = newWIP(); // allocation

//à partir de là, je vais lancer mes gros calculs, j'aimerais donc afficher ma petite fenêtre de progression.
myWIP.Show();

// Le problème ici, c'est que la fenêtre apparait bien, mais l'intérieur est tout blanc, dedans, il n'y a RIEN.

Ca fait 1h30 que je cherche sur le net, rien pour me débloquer :( Je suis sûr que c'est tout con, mais là je bloque complet.

SVP quelqu'un ? Cela serait immensément apprécié.
Si, par ailleurs, vous avez des sources (n'importe quoi) avec une appli qui jongle avec plusieurs fenêtres comme cela, je prends...

MERCI BIEN

8 réponses

cs_Crazyht Messages postés 1522 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 21 août 2010 8
1 juin 2004 à 14:48
Le plus "efficace serait de lancer cette fennetre dans un autre thread, car le thread principale se charge deja des calculs (ce qui ne laisse pas de temps pour le refresh de ta fenetre de progression). Mais si tu debut, les threads sont peut etre pas la prise de tete idéale.

Une deuxieme solution beaucoup - propre consiste a faire des myWIP.Refresh() lorsque les informations de la fenetre change, ce qui a la dont de forcer la mise a jour de l'UI en bloquant le reste du prog (quelques ms koi:d)
Cette solution devrait suffir a ton probleme.

A++

:-p Crazyht :)

[Admin Codes-Sources]
[Membre Developer-Association]

Un programmeur, c'est quelqu'un qui résout pour toi, de façon incompréhensible, un problème que tu ignorais avoir...
0
Utilisateur anonyme
1 juin 2004 à 15:07
Mama mia !!!

J'ai opté pour ta solution la plus simple,, le Refresh(), et ça marche :) :) :)

Je te remercie beaucoup, Crazyht ! :)
0
fdouieb Messages postés 264 Date d'inscription vendredi 12 décembre 2003 Statut Membre Dernière intervention 12 juin 2013 3
1 juin 2004 à 15:42
Bonjour Crazyht

Dans le meme genre d'idée.

as-tu une idée pour geler la fenetre le temps d'un calcul est afficher ce dernier une fois finie

A+
0
crack_xp Messages postés 91 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 25 janvier 2007
1 juin 2004 à 15:47
A mon avis, la meilleur solution est les Thread
pour t'aider voila un pt exemple d'utilisation des threads:

using System.Threading;//la classe
private Thread thread=null;/init le thread

thread= new Thread(new ThreadStart(TaClasse.TaMethode));
thread.Start();

NO TIME TO WASTE
0

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

Posez votre question
crack_xp Messages postés 91 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 25 janvier 2007
1 juin 2004 à 15:51
ça c'est pour fdouieb
tu initialise ta form en enabld = flase

dans :

private void Form1_Load(object sender, System.EventArgs e) {
this.Enabled=false;
}

et dès que tes calcul sont finis tu met
this.Enabled=true;

A+
NO TIME TO WASTE
0
cs_Crazyht Messages postés 1522 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 21 août 2010 8
1 juin 2004 à 16:16
myfrm.SuspendLayout(); pour figé l'affichage
puis
myfrm.ResumeLayout(true); pour le defiger et forcer un refresh (false pour ne pas forcer)

A++

:-p Crazyht :)

[Admin Codes-Sources]
[Membre Developer-Association]

Un programmeur, c'est quelqu'un qui résout pour toi, de façon incompréhensible, un problème que tu ignorais avoir...
0
Utilisateur anonyme
1 juin 2004 à 16:27
Excellent, je vais utiliser ça aussi :)
0
fdouieb Messages postés 264 Date d'inscription vendredi 12 décembre 2003 Statut Membre Dernière intervention 12 juin 2013 3
1 juin 2004 à 16:36
Merci crack_xp et Crazyht

A+
0