Winforms issue - Error creating window handle
Have you run Process Explorer or the Windows Task Manager to look at the GDI Objects, Handles, Threads and USER objects? If not, select those columns to be viewed (Task Manager choose View->Select Columns... Then run your app and take a look at those columns for that app and see if one of those is growing really large.
It might be that you've got UI components that you think are cleaned up but haven't been Disposed.
Here's a link about this that might be helpful.
Good Luck!
Win32Exception - error creating window handle?
Well, there are a couple of things to note.
First of all, HideSelection
doesn't hide or unhide the selection. It specifies, whether the selection will be hidden (or not) when the control loses focus. So it's pointless to change it when the TextBox
becomes focus'ed.
What you're doing in LostFocus
is default, btw. Why there is an exception in GotFocus
is burried within Windows API, I guess. Maybe some undefined state when HideSelection
checks inside a focus changed event whether the TextBox has focus or not or tries to hide the selection which is not shown.
Edit: It's not the Windows API on the first hand, but the framework. It tries to "recreate the handle" in the setter of HideSelection if it is changed (don't know why yet - would have to analyse sources) and seems to fail (don't know why either).
Edit2: Finally there's some problem in Win32 DestroyWindow - which leads to skipping the creation of the new window. Maybe because the old one is "in use" in the focus change events?
Interestingly, as soon as the exception occurs (for me), the LostFocus
event is fired, immediately followed by GotFocus
which throws another exception a.s.o. thus blocking the GUI. Both assignments to HideSelection
throw the exception.
Also, when you click the TextBox
, any selection is deselected automatically. This, however, is not the reason for the problem, because the exception is thrown if you change focus by pressing Tab (whose normal behaviour is to restore focus). But it may be related (state problems).
If you actually want to restore the selection, you could do it like this:
int selStart;
int selLen;
void textBox1_LostFocus(object sender, EventArgs e)
{
selStart = textBox1.SelectionStart;
selLen = textBox1.SelectionLength;
}
void textBox1_GotFocus(object sender, EventArgs e)
{
BeginInvoke((Action)(() =>
{
textBox1.SelectionStart = selStart;
textBox1.SelectionLength = selLen;
}));
}
How to find source for win32 exception error creating window handle
Short update: I solved the problem.
ProcDump didn't help me much, because I got pretty the same information from our logfiles. However, I was able to reproduce the error in our development environment. Thanks to debugger and displaying the user-objects count in the taskmanager I found the source of the memoryleak - an undisposed texbox which was created dynamically.
Thanks again for the tips!
Related Topics
The Property 'Id' Is Part of the Object's Key Information and Cannot Be Modified
What Could Be Causing a System.Typeloadexception
How to Pass an Event to a Method
How to Show the "Open With" File Dialog
Linq Query Built in Foreach Loop Always Takes Parameter Value from Last Iteration
Ef4 Code First: How to Add a Relationship Without Adding a Navigation Property
Passing Array of Strings to Webmethod with Variable Number of Arguments Using Jquery Ajax
Curiously Recurring Template Pattern and Generics Constraints (C#)
Windows Forms Graphic Issue on Windows 10 Os
Func Delegate with Ref Variable
Does Foreach Evaluate the Array at Every Iteration
Wait for a While Without Blocking Main Thread
How to Get Some Values from a JSON String in C#
Get Current Url in a Blazor Component
How to Grant Full Permission to a File Created by My Application for All Users