是否可以从C#的构造函数中调用/触发/抛出/触发(不知道正确的术语是什么)事件?
我要问的原因是我有一个难题:我有一个初始化时间很长的表单(通过其构造函数),因为它需要加载很多文件。因此,我希望在启动主表单之前显示启动/加载屏幕。此外,我想用初始更新来更新初始屏幕,告诉它到目前为止已加载了什么,尚未加载了什么。
我在单独的线程中运行启动屏幕,并希望发送有关事件加载的消息。不幸的是,看来我无法从主窗体的构造函数中触发事件。有人对我能做什么有任何建议吗?还是我将如何从构造函数中触发事件?
提前致谢。
如果您正在使用,winform
请查看以下代码
public partial class Form1 : Form //Your initial form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
LaunchWorkForm();
}
private void LaunchWorkForm()
{
var form2 = new Form2();
form2.OnStatusUpdated += form2_OnStatusUpdated;
form2.ShowDialog();
}
private void form2_OnStatusUpdated(string status)
{
//message comes from Working Form
//Invoke UI thread and update UI here
}
}
现在,这是您的表单或对话框,需要做很多工作
public partial class Form2 : Form
{
public delegate void UpdateStatusHandler(string status);
public event UpdateStatusHandler OnStatusUpdated;
public Form2()
{
//Start thread here
if (OnStatusUpdated != null)
{
OnStatusUpdated("I am going to start work");
}
//Doing a lot of work here
if (OnStatusUpdated != null)
{
OnStatusUpdated("Some of work has been done");
}
//Do other
if (OnStatusUpdated != null)
{
OnStatusUpdated("Now I am ready to load the form");
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句