8

我有一个 C# windows 窗体应用程序。我目前设置它的方式是,当 Form1_Load() 运行时,它会检查恢复的未保存数据,如果找到一些,它会提示用户是否要打开该数据。当程序运行时,它工作正常,但消息框会立即显示,并且主程序窗体(Form1)直到用户单击是或否后才会显示。我想先弹出Form1,然后再弹出消息框提示。

现在要在我在 Form 中创建计时器之前解决这个问题,在 Form1_Load() 方法中启动计时器,然后在第一个 Timer Tick 事件中执行检查和用户提示。这种技术解决了这个问题,但似乎可能有更好的方法。

大家有什么更好的想法吗?

编辑:我想我也使用了后台工作人员来做类似的事情。经历调用该方法返回表单线程的所有麻烦以及所有这些废话只是让它延迟几毫秒似乎有点愚蠢!

4

4 回答 4

16

我会使用 Form1_Shown()

于 2010-06-02T13:18:56.640 回答
6

使用显示事件。它似乎适合您的需要,并且只会在第一次显示表单时显示。

Form f1 = new Form();
f1.Shown += new EventHandler(f1_Shown);

public void f1_Shown(object sender, EventArgs e)
{
   // Show dialog in here
}
于 2010-06-02T13:25:04.677 回答
3

尝试“显示”事件:

Form.Show 事件

于 2010-06-02T13:21:41.600 回答
2
  • 使用 Windows.Forms.Timer 是一种良好、稳定、众所周知且易于理解的技术,可以满足您的需求。我会避免任何其他计时器对象。

  • 表单的Shown事件运行良好。

  • 重载/覆盖Show方法。(我更喜欢更好地控制的技术。)在这种方法中,我会进行所需的检查。准备好后,我会调用该base.Show方法,然后进行任何其他处理,例如消息框、提示、日志记录等。

于 2010-06-02T13:19:40.297 回答