在C#桌面应用程序中使用网页作为用户界面?

问题描述:

我正在用一个简单的UI构建一个C#桌面应用程序。由于我对HTML/CSS的熟悉程度以及以前基于Web的迭代类似的应用程序,如果我可以重新使用一些现有的HTML/CSS页面作为此新桌面应用程序的UI,那将是理想的选择。在C#桌面应用程序中使用网页作为用户界面?

这样可以用C#吗?任何人都可以展示一个使用HTML/CSS页面作为C#桌面应用程序UI的简单示例吗?

+0

你是什么意思的桌面应用程序?你的意思是WinForms? asp.net不是一个选项吗? – 2011-03-22 12:25:38

+0

我的意思是在最终用户机器上运行的应用程序。它不*网络应用程序。 – 2011-03-22 12:31:01

+0

是的,在这种情况下,它是一个桌面应用程序;在C#中,您可以创建一个win窗体或wpf应用程序。 – ukhardy 2011-03-22 12:36:27

不幸的是,WinForms或WPF都不足以像HTML/CSS那样使用。你将能够重用布局概念和艺术当然。而且,与WPF最接近的是,你甚至可以保留很多代码隐藏代码。

但是简单的答案是:没有

+0

您可以在Windows应用程序中添加功能齐全的浏览器功能。 **几乎所有能够在Windows上运行的普通浏览器都是Windows应用程序**。 – ukhardy 2011-03-22 12:42:29

+1

@ukhardy:我敢说所有能够在windows上运行的浏览器都是Windows应用程序......您的意思是什么? – 2011-03-22 12:43:51

+1

你错了,可以控制应用程序。 – ukhardy 2011-03-22 12:47:15

你可以尝试添加一个Web浏览器控件到窗体应用程序,以显示你的页面。但是这将需要远程托管,因为代码将无法在本地执行,除非您在c#中侦听特定链接并执行操作。

你也可以尝试一下WPF,这是一种新技术,用于创建漂亮的gui,其标记与html很相似,你可以很快地使用html体验来获取它。

您可以使用WebBrowser控件为您的应用程序添加Web浏览器功能。

您可以创建自己的html并设置WebBrowser控件来显示这些页面。您可以点击超链接或使用键盘快捷键在导航历史记录中向前和向后移动。默认情况下,您可以通过右键单击快捷菜单

访问其它浏览器功能,您甚至可以管理这些网页集中(例如用于局域网)和局域网的所有客户端可以连接到这个中心位置。这样你可以集中修改页面。

检查MSDN上的演练:

How to: Add Web Browser Capabilities to a Windows Forms Application

+1

你能处理来自这些页面的事件,比如按钮点击等吗? – 2011-03-22 12:56:39

+0

@Martinho Fernandes:是的,您可以从您的客户端应用程序代码调用页面中实施的控件事件和脚本方法。 – ukhardy 2011-03-22 13:09:27

+1

也许这只是我,但这提出了“为什么有一个应用程序,而不是只是使整个事情基于webbased并运行在用户的偏好浏览器?”的问题? – 2012-08-19 12:56:24

CefSharp(https://github.com/cefsharp/CefSharp)是使嵌入铬的好办法,但你仍然需要一个Web服务器。看看http://www.ultidev.com/products/Cassini/以替代IIS。

+0

对于桌面应用程序,如果我们使用CefSharp,是否还需要Web服务器? – 2017-02-16 01:45:15

+1

@Eric K.是的,你仍然需要一台网络服务器。你可以创建你自己的Web服务器并嵌入到你的应用程序中,看看这篇文章。 https://codehosting.net/blog/BlogEngine/post/Simple-C-Web-Server – 2017-02-17 09:58:30

其他答案的日期,新的不错的选择:

  • Neutronium - 只是一个HTML/JS/CSS UI进行了.net应用程序视图,需要MVVM(WPF式)的应用基础架构。最适合已经编写的可以利用HTML/JS/CSS UI的.NET应用程序。
  • Electron + Electron-Edge - 跨平台的HTML/JS/CSS应用平台+接口.NET代码。最适合刚刚需要调用.NET的新电子应用程序。

您可以尝试使用基于铬的控件 - DotNetBrowser。这种控制提供了广泛的互动选项,比如DOM操作和DOM事件,可以在你的情况下非常有用。

此外,还有演示如何在C#桌面应用程序中使用Web页作为HTML UI的文章:https://www.infoq.com/articles/html-desktop-net

所属披露:我与团队,创造DotNetBrowser工作。