-1

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

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

我的应用程序包含Main()一个 MainWindow.cs 文件的内部;

    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());
    }

在构造函数内部StuffMessageDialog显示的位置。

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

有人能告诉我为什么会这样吗?我是否可以做些什么来防止它发生?

我试图通过使用变量来抑制对话框,boolean但是由于正在重新创建对象,所以我不能这样做(无论如何也不应该这样做......)

4

1 回答 1

0

您不应该在构造函数中放置消息框。调用者应该处理任何异常并且他应该显示消息框

private void Caller()
{
    try
    {
        frmStuff frm = new frmStuff();
        frm.Show();
    }
    catch
    {
        //show your messagebox here
    }
}
于 2013-06-28T11:55:53.857 回答