C#WinForms:我应该使用Web浏览器控件吗?

时间:2010-11-21 05:24:05

标签: c# winforms

我正在构建一个Windows窗体应用程序,我将在其中添加一个控件,它将显示相当多的不同数据。在大多数情况下,内部数据将是导航按钮和帮助/培训文本。

我认为如果我能用HTML编写内容然后只在应用程序的控件中显示它,那将是理想的,但我不确定这是不是一个好主意。

需要注意的另一点是,在不久的将来某个时候将会有一个基于Web的相同应用程序版本,并且在HTML中执行这部分应用程序将使非常容易的可重用性。

如果这很重要,用户将不会安装IIS。

2 个答案:

答案 0 :(得分:6)

为此,我认为嵌入式Web浏览器非常棒。很多应用程序使用Web浏览器控件进行导航,信息,培训等。Steam就是一个例子。此外,可重用性几乎总是最佳实践。

但我会使用WebKit而不是内置的IE网络浏览器控件。

答案 1 :(得分:2)

我有一个类似的应用程序,我认为WebBrowser控件非常有效。如果您认为这是您需要的,我会为此而且还有许多其他类似的应用程序。您可以使用HtmlDocument.InvokeScript()从C#调用HTML页面中的Javascript函数,使用window.external从Javascript调用C#,并且通过这种双向通信可以简化生活。

用户不需要安装IIS,因为您没有运行Web服务器,只是使用HTML显示内容。

说实话,我会选择内置的IE控件而不是webkitdotnet。尽管WebKit本身优于IE,但是版本为0.5的webkitdotnet项目却没有C#<> JavaScript通信或DOM访问,似乎很难判断它是否仍在积极开发中。如果/它获得功能奇偶校验会很好,因为IE显然远非完美,但内置IE控件的优点是你的应用程序的每个用户都已安装它并且WebBrowser控件已经过充分测试。我发现了一些缺点:

  • IE版本可能介于6到9之间,因此您需要进行测试以确保您的内容适用于所有内容(与网站一样)。
  • IE中存在一个错误(至少最多8个),相对链接不能与<base href="file://...">结合使用。这可能会阻止您在本地HTML文档中使用相对链接。
  • 有时页面在WebBrowser控件中的显示方式与在其中显示的方式不同。例如,http://bugs.jquery.com/ticket/7104是一个,我遇到了另一个影响cufon的类似bug。
  • 出于兼容性原因,即使您的用户安装了IE&gt; 7默认情况下,WebBrowser控件仍将以IE7渲染模式呈现您的内容。这与默认情况下以最标准模式呈现的独立IE不同,因此如果您不期望它,它可以将您赶出去。你可以通过添加<meta http-equiv="X-UA-Compatible"标签来改变这一点,但是我实际上发现它可以让生活更轻松,因为它减少了你必须测试的不同版本的数量。