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
WebService C# (variable non modifiée !!) [ par mesdevs ]
Bonjour, Je débute tout juste en C# (Visual Studio 2005), et j'ai déjà un problème (désolé si ça vous parait trivial, mais moi ça me prend la tête) :
probleme de fenetre fille/mere [ par gretata ]
bonjour a tous !!bonjour, jai un problème pour appeler ma fenetre fille dans une fenetre parent ou mere, voila le code :using</font
probleme d' interopérabilité [ par thmatew ]
Amis développeurs, bonjour,j'ai un petit souci, je n'arrive pas a utilisé une DLL que j'ai créer dans mon programme, c'est un petit programme tt simpl
Generer des points aleatoirement !? [ par jimmy69 ]
Bonjour a tous ,Je suis sous visual studio . net et j'apprends le c sharp !Je me suis fait une class que j'ai nomme MyPoint.cs que voici :-----------
Serveur UDP [ par Sobieski ]
Salut.Je voudrais printer dans la console ce qui arrive en UDP sur le port 4321. J'ai fait un bout de code mais ca plante comme il faut :/ using Syste
c# [ par akodadi ]
j ai un probleme j veux afficher une forme et j comprens pa ces messages d bugs public override <FONT color=#000
[C#][ActiveX][Thread][HTML/Javascript] Evénements OK mais pas dans tous les cas [ par Mediant ]
Bonjour !Voilà, j'au dû me mettre au C# il y a quelque jours afin de réaliser un composant ActiveX. J'ai besoin que ce composant puisse m'envoyer des
Plusieurs structures imbriquées [ par F0ra ]
Bonjour, Je voudrais réaliser plusieurs structures imbriquées Comme : Couches[1].Neurons[1].w[1]=0 Dans le ficier Ia.cs : using System; using System
Probleme OleDbDataReader [ par bibibiba ]
Bonjour,je suis novice en C# et j'ai une classe BaseAccess qui doit permettre de lire les données d'un utilisateur contenues dans une base,pour ce fai
Livres en rapport
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|