我有一个C#windows窗体应用程序。我当前设置它的方式,当Form1_Load()运行时,它检查恢复的未保存数据,如果找到一些,它会提示用户是否要打开该数据。当程序运行时,它可以正常工作但是消息框会立即显示,并且主程序表单(Form1)在用户单击是或否之后才会显示。我想首先弹出Form1然后弹出消息框提示。
现在,在我在Form中创建一个计时器之前解决这个问题,在Form1_Load()方法中启动计时器,然后在第一个Timer Tick事件中执行检查和用户提示。这种技术解决了这个问题,但似乎可能有更好的方法。
你们有更好的想法吗?
编辑:我想我也使用后台工作人员做类似的事情。通过调用方法返回到表单线程所有麻烦似乎有点傻,所有的垃圾只是让它延迟了几毫秒!
答案 0 :(得分:13)
我会使用Form1_Shown()
答案 1 :(得分:5)
使用Shown事件。它似乎适合您的需要,并且只会在第一次显示表单时显示。
Form f1 = new Form();
f1.Shown += new EventHandler(f1_Shown);
public void f1_Shown(object sender, EventArgs e)
{
// Show dialog in here
}
答案 2 :(得分:2)
使用Windows.Forms.Timer是一种很好的,稳定的,众所周知的,易于理解的技术,可以满足您的需求。我会避免任何其他计时器对象。
表单的Shown
事件效果很好。
重载/覆盖Show
方法。 (我更喜欢控制的首选技术。)在这种方法中,我会进行所需的检查。准备好后,我会调用base.Show
方法,然后进行任何其他处理,例如消息框,提示,日志记录等。
答案 3 :(得分:2)
尝试“已显示”事件: