我希望首先加载我的Windows窗体,渲染它的孩子和所有。之后加载大量数据。这就是为什么我正在寻找在表单加载完成后我可以使用的任何事件。
对此有何想法?
答案 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()
方法设置的。