Windows窗体中是否存在“LoadComplete”这样的事件?

时间:2011-08-18 16:17:01

标签: winforms events

我希望首先加载我的Windows窗体,渲染它的孩子和所有。之后加载大量数据。这就是为什么我正在寻找在表单加载完成后我可以使用的任何事件。

对此有何想法?

4 个答案:

答案 0 :(得分:3)

我从来没有找到比Activated更好的解决方案;虽然每次表单获得焦点时都会提高 - 所以你需要在第一次之后过滤掉所有的时间:

bool _firstActivation = true;
void Form1_Activated(object sender, EventArgs e)
{
    if (_firstActivation)
    {
        _firstActivation = false;
        OnFirstActivation();
    }
}

private void OnFirstActivation()
{

}

答案 1 :(得分:2)

也许您正在寻找Form.Shown事件。如果你正在做很多密集的工作,也许你应该使用后台线程来避免锁定UI。

答案 2 :(得分:1)

就像MikeP所说,你只想处理一次Form.Shown事件。所以,只要完成就连接到偶数和分离。

    private void frmMain_Load(object sender, System.EventArgs e)
    {
        // Do stuff in form load.

        Shown += FirstShown;
    }

    private void FirstShown(object sender, EventArgs eventArgs)
    {
        Refresh();

        // Do something here

        // Detach from this event.
        Shown -= FirstShown;
    }

答案 3 :(得分:0)

我这样做是为了触发持续时间为1的计时器,并在事件中将其终止,并且使用该方法,我知道消息循环将为空并且表单初始化将在我的事件发生时完成。

事件是从Form_OnLoad()方法设置的。