【问题标题】:Exception not thrown from FormLoad inside a WindowsFormsHostWindowsFormsHost 内的 FormLoad 未引发异常
【发布时间】:2020-05-28 14:06:11
【问题描述】:

在从 WinForm 到 WPF 的移植过程中,我设置了一个 WindowsFormsHost 来托管我所有的旧窗体。

我在这样的设置器中将表单设置为子表单:

set{
  try{
    windowsFormsHost.Child = value;
  }
  catch{}
}

然后,我注意到如果表单的 Load 函数(本例中的值)抛出异常,该函数只会走得更远,我看不到异常。 即使我使用 try catch 块,也没有任何反应。

如何捕获值加载引发的异常?

【问题讨论】:

  • 您是否尝试过调试您的应用程序?您能否发布异常的堆栈跟踪?能否提供更多代码上下文?
  • 它不会发生在单个异常上:每个异常都不会重新抛出
  • 和调试看到load函数抛出异常,但是代码只是踩到windowsFormsHost.Child = value;后面的那行因为什么都没发生
  • 无论如何,异常堆栈跟踪会有所帮助。
  • 我正在使用 .NET Framework

标签: c# wpf winforms


【解决方案1】:

设置Child 属性不会引发异常。

它在稍后的阶段被抛出,在你的try/catch 块已经执行并且定义此代码的方法已经返回很久之后。

您需要在它们发生的地方捕获异常,即在这种情况下在您的表单内部。

您也可以在您的应用中定义global error handlers。

【讨论】:

  • 不幸的是,我有一个全局错误处理程序(在加载表单时工作),但在此阶段不会触发它
  • 那么捕获表单中的异常呢?
猜你喜欢
  • 2012-10-10
  • 2012-04-01
  • 2019-03-02
  • 1970-01-01
  • 2013-01-29
  • 1970-01-01
  • 2014-03-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多