Windows窗体构造函数被多次调用

时间:2013-06-28 11:51:32

标签: c# winforms

我正在创建一个简单的Windows窗体应用程序,这个窗体在初始化时会创建多个新对象,在某些情况下(当出现错误时)会向用户显示带有一些文本的消息框对话框。

我的问题是,如果出现错误,会多次显示消息对话框。在检查为什么会发生这种情况时,我发现Windows窗体应用程序的构造函数被多次调用,确切地说是四次。不知怎的,我不认为这是正常行为......

我的应用程序由MainWindow.cs文件中的Main()组成;

    public MainWindow()
    {
        InitializeComponent();
        Setup();
    }

    private void Setup()
    {
        stuff = new Stuff(this);
    }

    public static void Main()
    {
        Application.ThreadException += Application_ThreadException;
        AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
        Application.Run(new MainWindow());
    }

Stuff的构造函数内部是显示MessageDialog的位置。

MainWindow()的构造函数中添加断点我可以看到它被多次调用。

有人可以告诉我为什么会这样,如果我有什么办法可以防止它发生?

我试图通过使用boolean变量来禁止对话框但是由于正在重新创建对象,所以我不能这样做(并且不应该反过来......)

1 个答案:

答案 0 :(得分:0)

你不应该在构造函数中放置一个消息框。调用者应该处理他应该显示消息框的任何异常

private void Caller()
{
    try
    {
        frmStuff frm = new frmStuff();
        frm.Show();
    }
    catch
    {
        //show your messagebox here
    }
}