我是否可以使用某种布尔值来检查表单实例是否已加载,或者等到表单加载之后?
例如:
While(form_loaded == false) {
Try {
//do something
}
catch {
}//do try catch so code won't barf
}
我一直收到以下异常:
System.Windows.Forms.dll中出现'System.InvalidOperationException'类型的第一次机会异常
System.Windows.Forms.dll中出现未处理的“System.InvalidOperationException”类型异常
其他信息:在创建窗口句柄之前,无法在控件上调用
Invoke
或BeginInvoke
。
这就是我所担心的。
此外,如果需要更详细的解释,我可以尝试发布一些代码和/或更多输出调试信息。
答案 0 :(得分:18)
尝试使用显示的事件
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Shown += new System.EventHandler(this.Form1_Shown);
}
private void Form1_Shown(object sender, EventArgs e)
{
}
}
希望这个帮助
答案 1 :(得分:7)
表单完全加载后触发的第一个事件是Shown
事件。用它......
根据MSDN,事件序列为:
申请开始时:
申请截止时:
正如@Henk Holterman在答案中所述,不要在事件驱动的表格中使用忙碌的等待......
答案 2 :(得分:5)
您可以选择Loaded
和Shown
个活动。
Windows是事件驱动的,所以永远不要等待循环中的某些事情。