Reputation: 829
Is there some sort of boolean that I can use to check whether the instance of a form is loaded, or otherwise wait until the form is loaded?
for example:
While(form_loaded == false) {
Try {
//do something
}
catch {
}//do try catch so code won't barf
}
I keep getting the following exception:
A first chance exception of type 'System.InvalidOperationException' occurred in System.Windows.Forms.dll
An unhandled exception of type 'System.InvalidOperationException' occurred in System.Windows.Forms.dll
Additional information:
Invoke
orBeginInvoke
cannot be called on a control until the window handle has been created.
This is what I am worrying about.
Additionally if a more detailed explanation is needed I can try to post some code and/or some more output debugging information.
Upvotes: 8
Views: 43096
Reputation: 10456
The first event that is triggered after form is fully loaded is the Shown
event. use it...
According to MSDN the event sequence is :
When application starts:
When an application closes:
And as @Henk Holterman stated in his answer, don't use busy waiting in an event driven form...
Upvotes: 10
Reputation: 273854
You have a Loaded
and a Shown
event to pick from.
Windows is event driven so never wait for something in a loop.
Upvotes: 6
Reputation: 13794
try to use the shown event something like this
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Shown += new System.EventHandler(this.Form1_Shown);
}
private void Form1_Shown(object sender, EventArgs e)
{
}
}
hope this help
Upvotes: 26