Solved

Error creating window handle when adding controls

Posted on 2011-03-15
4
1,056 Views
Last Modified: 2012-05-11
Hi

I am developing a VB.NET application in VS2008. It creates a large number of controls on the form and in the forms containers. When the number of controls reacech several thousends the program abends with the error: "Error creating window handle". Tests I have done indicates there is a max number of controls that can be added.

Is there a safe way to increace the max number of handels?
Or is it safer to rewrite the program to avoid so manny controls simultainiously?

My test appl looks like this:

Public Class Form1
    Dim lbl() As Label
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim X As Integer
        ReDim lbl(10000)
        For X = 1 To 10000
            lbl(X) = New Label
            lbl(X).Text = X
            lbl(X).Location = New Point(100, 20 * X)
            lbl(X).AutoSize = True
            Me.Controls.Add(lbl(X))
        Next
    End Sub
End Class

The full error report is attached. Error-creating-window-handle.txt
0
Comment
Question by:daghoff
  • 2
4 Comments
 
LVL 33

Accepted Solution

by:
it_saige earned 250 total points
ID: 35140313
Here is a great article about this problem.  The author even goes into some resolutions but states essentially that, ultimately it would be better to reduce the number of controls in order save system resources.  

http://weblogs.asp.net/fmarguerie/archive/2009/08/07/cannot-create-window-handle-desktop-heap.aspx

HTH,

-saige-
0
 
LVL 85

Expert Comment

by:Mike Tomlinson
ID: 35140835
10000 labels?!...

What are you displaying to the user?

A DataGridView might be a better choice:
http://msdn.microsoft.com/en-us/library/e0ywh3cz.aspx
0
 

Author Comment

by:daghoff
ID: 35155329
I know it may sound a bit crazy, but initially it worked fine. The problem is that the number of controls generated is dependent of user input. In some cases to many controls are created. After having read the provided article I have decided to rewrite the program. A DataGridView is not what I need because I must design the UI in detail.

But one last question: How do you properly release ALL resources that a control on a form may have allocated, when the control is no longer needed? So far I have only used a "Controls.Remove" statement on the control or on the control's container. Is this enough or should I add in some dispose/release/close commands? Are there other things to do like using a garbage collector?
0
 
LVL 85

Assisted Solution

by:Mike Tomlinson
Mike Tomlinson earned 250 total points
ID: 35155777
Right...calling Dispose() on the control will help reclaim the memory faster.
0

Featured Post

Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
i have to take the screenshot of command prompt? how to do this? 1 45
Expression Evaluater 3 37
Convert datetime to time string 10 28
VB.NET Textbox input validation 4 37
Step by step guide to Clean and Sort your windows registry! Introduction: Always remember: A Clean registry = Better performance = Save your invaluable time In this article we're going to clear our registry manually! Yes, manually! The e…
Issue: Unstable cursor in Windows XP and Windows runs extremely slow in that any click will bring up the Hour glass (sometimes for several seconds before giving you what you want) . Troubleshooting Process and the FINAL FIX: This issue see…
Two types of users will appreciate AOMEI Backupper Pro: 1 - Those with PCIe drives (and haven't found cloning software that works on them). 2 - Those who want a fast clone of their boot drive (no re-boots needed) and it can clone your drive wh…
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…

790 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question