我正在创建一个简单的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
变量来禁止对话框但是由于正在重新创建对象,所以我不能这样做(并且不应该反过来......)
答案 0 :(得分:0)
你不应该在构造函数中放置一个消息框。调用者应该处理他应该显示消息框的任何异常
private void Caller()
{
try
{
frmStuff frm = new frmStuff();
frm.Show();
}
catch
{
//show your messagebox here
}
}