【发布时间】:2018-01-16 15:23:56
【问题描述】:
我正在以这种方式创建并显示一个新窗口:
GammeDetail gammeDetail = new GammeDetail(_barCode, userID);
gammeDetail.ShowDialog();
在 GammeDetail 类的构造函数中,我正在尝试这样做:
try
{
this._numLot = barcode.Substring(0, barcode.Length - 2); ;
this._numGamme = barcode.Substring(barcode.Length - 2);
}
catch
{
this.Close();
}
但这会在gammeDetail.ShowDialog(); 上引发以下异常Cannot set Visibility or call Show, ShowDialog, or WindowInteropHelper.EnsureHandle after a Window has closed.
我还有另一个函数,它是一个事件处理函数,但会关闭当前窗口,如下所示:
private void newScan_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
在这种情况下,它可以按我的意愿完美运行,我尝试创建相同的函数,但没有将其作为事件处理程序,但它抛出了相同的先前异常。
我不明白为什么当函数是事件处理程序时它不抛出任何异常。
如果您有任何想法,我会很高兴听到他们的意见。 (如果您需要一段特定的代码来提供帮助,请随时提出问题,而不是在没有帮助的情况下投反对票。)
【问题讨论】:
-
我怀疑
try { }块中存在未处理的异常。设置断点in catch { this.Close(); }。您的代码不应“处理”这样的可能异常,因为它根本无法处理它 - 外部代码发送了无效的参数值,对其进行验证并抛出 ArgumentException。 -
你为什么要在窗口创建之前关闭它?
-
因为在我的构造函数中,我正在对服务进行一些调用,该服务返回一些我想在窗口上显示的信息。
标签: c# wpf exception-handling event-handling