Accueil > Forum > > > > Forms en série...
Forms en série...
vendredi 7 juillet 2006 à 16:43:22 |
Forms en série...

immerczeck
|
Bonjour! Pourriez-vous m'aider à trouver l'erreur dans ce code, à chaque fois que je clique sur le button1, une fenêtre apparaît, mais elle reste bloquée...
using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Threading;
namespace test { public partial class Form1 : Form { public Form1() { InitializeComponent(); }
ArrayList c1 = new ArrayList(); bool a = false;
private void Form1_Load(object sender, EventArgs e) { Thread t1 = new Thread(new ThreadStart(funct)); t1.Start(); }
private void button1_Click(object sender, EventArgs e) { a = true; }
private void funct() { for (; ; ) { { if (a == true) {
c1.Add(new Conversation("corr", "orig")); a = false; } } } }
public class Conversation { public Form2 fenetre; public string corres; public string origin; public Conversation(string corr, string orig) { corres = corr; origin = orig; fenetre = new Form2(); fenetre.Show(); fenetre.Activate(); } public void Activate() { fenetre.Show(); fenetre.Activate(); } } } }
|
|
vendredi 7 juillet 2006 à 17:03:59 |
Re : Forms en série...

woot6768
|
Salut, Peu être est-ce parce-que tu déclare une class dans une autre class. (Je ne suis pas sûr)
_________________________________________________________________________ Woot
|
|
vendredi 7 juillet 2006 à 17:31:35 |
Re : Forms en série...

immerczeck
|
Merci de ta réponse! Je viens d'essayer en mattant la classe à l'extérieur, ça veut toujours pas! Pas d'autres idées? (je précise que la Form 2 ne contient aucun contrôle, aucun code n'est exécuté au chargement)
|
|
vendredi 7 juillet 2006 à 18:58:31 |
Re : Forms en série...

apacheswiss
|
peut-être que ça viens du fait que c'est ton 2ème thread qui gère cette fenêtre, et qui est dans une boucle qui lui prend tout son temps??? je ne suis pas sûre...
essaye de faire en sorte de faire un thread par fenêtre ouverte...
|
|
vendredi 7 juillet 2006 à 19:09:48 |
Re : Forms en série...

immerczeck
|
lut! j'ai changé le code de funct() comme cela:
private void funct() { for (; ; ) { if (a == true) {
Thread t2=new Thread(new ThreadStart(opennewwin)); t2.Start(); a = false; } } }
private void opennewwin(){ c1.Add(new Conversation("corr", "orig")); Thread.CurrentThread.Suspend();
} mais cela ne change pas grand chose...la fenêtre plante toujours
|
|
vendredi 7 juillet 2006 à 19:12:53 |
Re : Forms en série...

immerczeck
|
ah au fait! ça ne risquerait pas de mieux marcher avec un évènement? comme Onachanged par exemple? Seulement j'y connais rien aux évènements alors je sais pas du tout si ça changerait quelque chose.
Immerczeck
|
|
samedi 8 juillet 2006 à 11:27:48 |
Re : Forms en série...

Bidou
|
Salut, Le problème vient sûrement du fait que tu instancies une nouvelles form dans ton thread ! Franchement, s'est très très déconseillé de faire ce genre de chose, ça n'apporte que des ennuis...
VC# forever
|
|
samedi 8 juillet 2006 à 11:44:50 |
Re : Forms en série...

Bidou
|
Réponse acceptée !
Je ne sais pas exactement ce que tu veux faire, mais essayes ceci, peut-être que ça te conviendras : public partial class Form1 : Form { private ArrayList _al = new ArrayList(); private bool _construct = true;
public Form1() { this.InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { Thread thread = new Thread(new ThreadStart(funct)); thread.IsBackground = true; thread.Start(); } private void funct() { while (this._construct) { this._al.Add(new Conversation("corr", "orig")); Thread.Sleep(100); } this.Invoke(new EventHandler(this.CreateWindows), this._al.Count, EventArgs.Empty); }
private void CreateWindows(object o, EventArgs e) { for (int i = 0; i < this._al.Count; i++) { // Tu peux utiliser l'arrayList qui contient tes Conversations ici Form form = new Form(); form.Show(); } } private void button1_Click(object sender, EventArgs e) { this._construct = false; } public class Conversation { public string corres; public string origin; public Conversation(string corr, string orig) { corres = corr; origin = orig; } } }
VC# forever
|
|
samedi 8 juillet 2006 à 12:16:19 |
Re : Forms en série...

immerczeck
|
lut! merci beaucoup!! j'ai adapté un peu le code et ça marche parfaitement! est-ce que tu pourrais expliquer la ligne this.Invoke(new EventHandler(this.CreateWindows), this._al.Count, EventArgs.Empty); si j'ai bien compris, un nouvel évènement est créé? mais à quoi sert le Invoke? à l'appeler?
Sinon, voici le code, pour ceux que ça intéresserait:
public partial class Form1 : Form { private ArrayList _al = new ArrayList(); private bool _construct = true;
public Form1() { this.InitializeComponent(); }
private void Form1_Load(object sender, EventArgs e) { Thread thread = new Thread(new ThreadStart(funct)); thread.IsBackground = true; thread.Start(); }
private void funct() { while (true) { if (!_construct) { this._al.Add(new Conversation("corr", "orig")); this.Invoke(new EventHandler(this.CreateWindows), this._al.Count, EventArgs.Empty); _construct = true;
} } }
private void CreateWindows(object o, EventArgs e) { Conversation c = _al[_al.Count-1] as Conversation; // c.fc = new Form2(); c.fc.Show(); }
private void button1_Click(object sender, EventArgs e) { this._construct = false; }
public class Conversation { public string corres; public string origin; public Form2 fc=new Form2();
public Conversation(string corr, string orig) { corres = corr; origin = orig; fc.Text = "De " + orig + " à " + corr; } } }
Merci beaucoup!
|
|
samedi 8 juillet 2006 à 12:27:54 |
Re : Forms en série...

Bidou
|
Petite correction : Quand tu appelles le Invoke, pas besoin de passer this._al.Count, tu peux mettre null sans problème :-) Pour savoir ce que fais Invoke, je te renvoie sur ce très bon tuto de Mx
VC# forever
|
|
Cette discussion est classée dans : public, system, fenetre, void, using
Répondre à ce message
Sujets en rapport avec ce message
Problèmes de création d'un service Windows [ par nyoto ]
Bonjour à tous,Ne développant pas depuis très longtemps en .Net je galère grave pour créer un service windows récupérant automatiquement à intervalles
Gestion des erreurs WCF dans Silverlight [ par EmacLi ]
Bonjour à tous, Dans mon application silverlight, je tombe sur cette erreur apparemment classique lorsqu'un service wcf est utilisé : CommunicationEx
Invoquer une DLL c++ dans programme c# [ par Belisir ]
Bonjour, depuis quelques jours je me heurte à résoudre un problème qui à première vue, ne semblait pas poser de problème : Invoquer les méthodes d'un
Utilisation des tableaux [ par nanard0667 ]
Bonjour, Je débute en programation et je souhaiterais faire un petit programme pour calculer un prix T.T.C. à partir d'un prix H.T. avec visual Studio
Transmettre les données d'un a un autre form [ par Lorine ]
Bonjour, J'ai un form dans lequel j'ai un menu avec * charger la base de donnée * Accès au deuxième form Et une datagridview [code=cs] using System
SOS: Binding d'un Combobox [ par yayasam ]
A l'aide SVP, c'est la 2eme fois ke je poste mon problème et j'ai tjs pas de réponse:[^^sad1] mon problème réside dans le Binding d'un combobox: tout
Plantage designer suite à une modification sur le formulaire [ par Mickael1984 ]
Bonjour, je suis un peu perdu sur un développement que je fais actuellement je mets le code, si quelqu'un a déjà eu ce genre de problème. Mon problè
probléme : Object reference not set to an instance of an object [ par ami7 ]
bonjour j'ai message d'erreur suivant : Object reference not set to an instance of an object et indique un trait jaune au niveau de la méthode " de
Livres en rapport
|
Derniers Blogs
WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLETECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLE par ROMELARD Fabrice
Speakers: Julien Marechal, Gautier Confiant, Sébastien MEYER La session débute par le positionnement de la solution System Center par rapport aux concepts d'organisation ITIL. Le portail du catalogue de se...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : PLEINIèRE SECOND JOURTECHDAYS PARIS 2012 : PLEINIèRE SECOND JOUR par ROMELARD Fabrice
Après une première journée dédiée aux développeurs, cette seconde journée est dédiée au monde des entreprises et de ses applications. Ainsi, cette pleinière est dédiée à faire un 360 de l'évolution des applications Business aux demandes ac...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : RETOUR D'EXPéRIENCE SUR LA MISE EN PLACE D'UN CLOUD PRIVéTECHDAYS PARIS 2012 : RETOUR D'EXPéRIENCE SUR LA MISE EN PLACE D'UN CLOUD PRIVé par ROMELARD Fabrice
Speaker : Guillaume Rochette Cette session est dédiée à fournir le retour sur la mise en place d'un cloud privé (IaaS) par Osiatis pour son compte ou celui de ses clients. Ce projet s'est déroulé sur 4 mois et a permis de faire évoluer...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|