在构造函数中的C#调用事件

Gevo12321

是否可以从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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章