0

我们需要在浏览器中运行 WinForm 智能客户端桌面应用程序。以下文章介绍了如何在 WPF 浏览器应用程序 (XBAP) 中托管 WinForm。

http://www.codeproject.com/Articles/31429/Embedding-a-NET-WinForms-Application-in-an-Interne

但是我们的应用程序是基于 Smart Client 架构(Smart Client Software Factory - Guidance Package)的。所以我们无法控制表单的创建和显示。任何人都可以分享在基于 WPF 浏览器的应用程序中托管智能客户端所需的详细信息吗?

4

1 回答 1

0

终于找到了一些解决方法来实现这一点。

运行 Shell 表单的 WindowsFormsApplication 类的重写 Start 方法。但这导致了另一个形式被处理的问题。CabApplication.Run 方法在内部调用 Start 方法,然后在窗体关闭后处理窗体。由于我没有在 Start 方法中显示表单,因此它直接进行处理。

为了克服这个问题,我评论了 SCSF 框架中 Run 方法的 dispose 调用并在应用程序中处理。我不确定改变框架是否是个好主意,但它对我有用。

为了在 XBAP 应用程序中获取 Shell 对象,我在 WinForm 应用程序中创建了一个方法,该方法返回 Form 对象。我还在 AfterShellCreated 中使用了一个事件来通知 XBAP 应用程序有关 Shell 创建的信息。

通过所有这些更改,我能够在基于 WPF 浏览器的应用程序中托管智能客户端。

希望这对其他人有帮助。

于 2016-06-17T09:27:21.163 回答