Accueil > Forum > > > > Erreur lors de la création d un handle de fenêtre
Erreur lors de la création d un handle de fenêtre
samedi 18 avril 2009 à 15:31:50 |
Erreur lors de la création d un handle de fenêtre

cedric3333
|
Bonjour a tous, voila j'ai un problème depuis plusieurs mois que j'avais laissé de coté en me disant que je trouverai la solution plus tard. Mais bon voila je n'arrive toujours pas a le résoudre, et c'est tres important poru moi de trouver la solution. En fait j'ai un Panel1 constitué de 2 UserControl : Le 1er : UserControl constitué d'un label et d'un textBox Le 2eme : UserControl constitué d'un Label, une combobox et un bouton (avec une image). Quand je clique sur le Bouton dans le UserControl2 je crée un Panel1 (donc constitué des 2 UserControl) et ainsi de suite. Ceci me permet d'afficher des hiérarchies. Si je fais 13 fois l'opération je prends le message d'erreur "Erreur lors de la création d un handle de fenêtre".
Voici comment reproduire le problème simplement. Avec cet exemple ca plante au niveau 45. 1) créer une applicaiton WinForms, avec un Form1. Mettre : privatevoid Form1_Load(object sender, EventArgs e) { this.autoscroll = true MonControl MonControl1 = new MonControl(1); this.Controls.Add(MonControl1); } Puis créer la classe suivante : using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { class MonControl :Panel { public TextBox MaTextBox = new TextBox(); private Button MonBouton = new Button(); public MonControl(int nIdent) { this.MaTextBox.Dock = System.Windows.Forms.DockStyle.Top; this.MaTextBox.Location = new System.Drawing.Point(0, 0); this.MaTextBox.Size = new System.Drawing.Size(601, 20); this.MaTextBox.TabIndex = 0; this.MonBouton.Dock = System.Windows.Forms.DockStyle.Right; this.MonBouton.Location = new System.Drawing.Point(526, 20); this.MonBouton.Size = new System.Drawing.Size(75, 26); this.MonBouton.MaximumSize = new System.Drawing.Size(75, 26); this.MonBouton.TabIndex = 1; this.MonBouton.Text = "MonBouton"; this.MonBouton.UseVisualStyleBackColor = true; this.MonBouton.Click += new EventHandler(MonBouton_Click); this.Controls.Add(this.MonBouton); this.Controls.Add(this.MaTextBox); this.Dock = System.Windows.Forms.DockStyle.Top; this.Location = new System.Drawing.Point(0, 0); this.Name = nIdent.ToString(); this.Size = new System.Drawing.Size(601, 46); } void MonBouton_Click(object sender, EventArgs e) { this.PushButon(); } publicvoid PushButon() { int nsave = this.Height; MonControl MonControl1 = new MonControl(Convert.ToInt32(this.Name) + 1); MonControl1.Dock = System.Windows.Forms.DockStyle.Bottom; MonControl1.MaximumSize = new Size(this.Width - 10, 20000000); this.Controls.Add(MonControl1); this.Height += MonControl1.Height; if(this.Parent.GetType() == typeof(MonControl)) (this.Parentas MonControl).AjusterHauteur(nsave); MonControl1.MaTextBox.Text = MonControl1.Name; MonControl1.MaTextBox.Focus(); MonControl1.PushButon(); } publicvoid AjusterHauteur(int nsave) { int nsave2 = this.Height; this.Height += this.Controls[this.Controls.Count - 1].Height - nsave; if(this.Parent.GetType() == typeof(MonControl)) (this.Parentas MonControl).AjusterHauteur(nsave2); } } } A lexecution, cliquer sur le bouton et le reste se fait tout seul jusqu'au plantage. Quelqu'un pourait m'aider? Merci bp Cédric
|
|
samedi 18 avril 2009 à 17:13:00 |
Re : Erreur lors de la création d un handle de fenêtre

Tilois
|
Bonjour, Chaque user control crée des "objets USER" qui correspondent à peut prêt au nombre de controles enfants se trouvant dans le user control. La création d'un nouveau user control avec en son sein X sous controles, crééra dans le système X nouveaux objets USER. Vous semblez faire cette opération un certain nombre de fois. Or de mémoire il me semble que le système peut au mieux contenir 10000 objets USER simultanément (par utilisateur et par session). Ce nombre peut etre vu dans le taskmanager (ne pas oublier d'afficher la colonne intitulée "Objets USER"). La solution consisterait à diminuer le nombre d'objets créés, en revoyant par exemple l'architecture de l'application. En espérant vous avoir aidé, je vous souhaite une bonne fin de journée
|
|
samedi 18 avril 2009 à 18:03:10 |
Re : Erreur lors de la création d un handle de fenêtre

cedric3333
|
Bonjour, merci beaucoup pour ta réponse. Comment tu fais pour voir le nombre de Objets USER? je n'y arrive pas
|
|
dimanche 19 avril 2009 à 09:09:51 |
Re : Erreur lors de la création d un handle de fenêtre

Tilois
|
C'est une colonne à ajouter dans le taskmanager: Menu affichage -> Sélectionner les colonnes. La tu choisis objets USER.
|
|
dimanche 19 avril 2009 à 10:03:26 |
Re : Erreur lors de la création d un handle de fenêtre

cedric3333
|
Merci. Alors je viens de regardé. Lorsque mon programme plante, j'ai en tout j'ai 2800 objets USER dont 148 pour mon aplli.
|
|
dimanche 19 avril 2009 à 21:12:35 |
Re : Erreur lors de la création d un handle de fenêtre

Robert33
|
Bonsoir C'est étrange, cela ne devarit pas planter aussi vite. J'ai essayé ton code et effectivement ça plante à 46 iterrations. Mais je me demande si le probleme vient du nombre de controles ou de la profondeur des user-controles. J'ai fais le test suivant: Modification du constructeur pour passer la forme Parent Au lieu d'ajouter le nouvel MonCcontrol dans la liste des controles de son Parent, je l'ajoute à celle de la Form mère, et là je n'ai plus de plantage, mais par contre j'ai un probleme de performance au dessus de 128 iterrations. J'ai limitter le nombre d'iterrations à 255, et j'ai effectivement ces 255 MonControl d'affichés. class MonControl : Panel { public TextBox MaTextBox = newTextBox(); private Button MonBouton = newButton(); Form _ParentForm = null; private staticint counter = 0; public MonControl(int nIdent, Form parent) { counter++; _ParentForm = parent; ... }
public void PushButon() { ...
_ParentForm.Controls.Add(MonControl1); ... if (counter < 255) MonControl1.MonBouton.PerformClick(); } ... }
g, enjoy it!
|
|
lundi 20 avril 2009 à 09:19:08 |
Re : Erreur lors de la création d un handle de fenêtre

cedric3333
|
Bonjour, merci beaucoup pur ta réponse. C'est effectivement tout mon probleme : la profondeur m'est tres utile et est tres importante. Ce qui me gene c'est que dans mon exemple ca plante au niveau 46 mais dons mon programme (qui est plus complexe) ca plante au niveau 12, et ca c'est tres pénalisant. Tu pense que c'est une limitation du système? Cédric
|
|
Cette discussion est classée dans : system, using, moncontrol, monbouton, moncontrol1
Répondre à ce message
Sujets en rapport avec ce message
API? [ par BlackWizzard ]
en C, j'avait un prog du genre ::SetWindowPos(FindWindow("ConsoleWindowClass",NULL),HWND_TOP,0,0,0,0,SWP_SHOWWINDOW); (C pour chacher le console dos d
[C#] CopyTo => Pb de copy [ par adrien78 ]
J' ai absolument besoins de récréer la fonction CopyTo en C#=> Cependant j' ai deux pb : - Le fichier copié ne peut pas être lu (érreur de copie
Pb avec mon WebService : perte de variable [ par vow ]
Bonjour @ tousJe me suis mis au C# depuis peu de temps, et je crée mon premier WebService.Un client appelle ce WS.Mon problème est que j'ai l'impressi
plantage du prog [ par shinevilkyo ]
lu all,j ai code un explorateur win en csharp eilmarche super sur le dd ou sur tt disque logique mais kan le contenue est trop gros a afficher ds une
Definition [ par GazGaz ]
lu voila je code en c# et en haut de chacune de mes pages il y a : ________________________________using System;using System.Collections;using System.
Serialization Soap [ par zaka48 ]
j'ai un probleme avec la declaration de l'esapce de nom using System.Runtime.Serialization;using System.Runtime.Serialization.Formatters.Soap;c'est ce
Word C# [ par pete87150 ]
Bonjour,Je voudrais savoir comment ouvrir un document Word en C#, quelle référence ou directive utiliser etc.Voici mon code simplifié qui ne marche pa
[C#] [XML] dataSet [ADO.NET] [ par oboudou ]
Je ai copier ce code d'un tutorial de developpez mais je n'est pas réussi a l'addapter pour lire une base de donné dans un fichier xml. Si on peut me
Erreur dont j'arrive pas a me débarrasser [ par patemino ]
En C# avec #developusing System;using System.Windows.Forms;using System.IO;Dans une classe nommée repertoire :public class Répertoire {p
Souci avec placeholder [ par MorpionMx ]
Bonjour, J'ai un petit souci de placeholder qui n'affiche aucun controle.Pourtout, ca doit etre si simple, je me demande ce que je fais pas bien.J'ai
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOURTECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOUR par ROMELARD Fabrice
Cette session est la dernière pleinière de ces 3 jours de TechDays Paris 2010. Généralement, cette troisième journée est plus axée sur l'avenir vu par Microsoft. Après un retour sur l'avenir vu par la Science Fiction ou par ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice 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
|