daghoff
asked on
Error creating window handle when adding controls
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
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
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
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?
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?
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
What are you displaying to the user?
A DataGridView might be a better choice:
http://msdn.microsoft.com/en-us/library/e0ywh3cz.aspx