在Web浏览器中运行WinForms应用程序

13

Visual WebGui已不再进行开发/支持:在Codeplex停止之前,唯一可以找到它的地方在这里:(https://archive.codeplex.com/?p=visualwebgui) - RJ Kelly
可以使用WASM和MONO实现,并且有人做到了。这是一个示例:https://github.com/roozbehid/WasmWinforms,还有一个在线演示:https://webassembly.z19.web.core.windows.net/,它在Linux上可以运行而无需.NET。 - Erfan Azhdari
6个回答

12

Visual WebGui是基于ASP.NET的Web开发框架。使用内置于Visual Studio中的Visual WebGui设计器,其开发体验与Windows Forms相同/类似。您可以像在Windows Forms上一样编写代码,并且WebGui运行时会将其转换为HTML5 / CSS / JS。

将您的Windows Forms应用程序转换为Visual WebGui Web应用程序所需的工作量取决于您的Windows Forms应用程序使用的第三方/.NET组件。 Visual WebGui API与Windows Forms非常相似,因此在某些情况下,您可以添加对WebGui特定程序集的几个引用,然后对一些名称空间进行搜索/替换。当然,由于这是两个不同的平台,存在一些差异,但开发体验与Windows Forms相当相似。


1

WinForms不是Web。Web就是Web。

Web指的是HTML + 其他东西(通常是JavaScript、CSS,可能还有jQuery或类似的东西)。

1 - 如果你需要一个Web应用程序,并想使用.Net来完成,创建一个ASP.Net应用程序。

2 - 如果你需要一个Windows应用程序(桌面),创建一个WPF应用程序。

3 - 如果你需要一个Windows 8“Metro”风格的应用程序(也称为Windows Store应用程序),创建一个WinRT XAML应用程序。

4 - WinForms完全没有用处。忘记它吧。

如果你的客户不想安装任何版本的.Net Framework,你唯一的选择就是#1。

无论你如何修改使其在Web浏览器中运行,WinForms应用程序永远不会成为Web应用程序。

XBAP(WPF浏览器应用程序)也不是Web应用程序。它只是一个没有自己窗口的常规WPF客户端应用程序。

编辑:

如果你以正确的方式进行操作(即保持关注点分离并将应用程序逻辑放在控制器或视图模型中,而不是大多数WinForms开发人员通常使用的可怕的代码后台实践),那么重用应用程序逻辑并创建一个新的应用程序(Web或其他)应该不难,同时保持数据访问和业务逻辑层完整。


3
我确实知道这个!我只是想问一下有没有人使用过WebGui? - KF2
@Irsog 我不知道那是什么,也不关心。如果我需要网页,我就用网页,否则我用WPF。没有理由使用过时的winforms工具。 - Federico Berasategui
我有一个 Winform 应用程序。我可以使用 WPF 浏览器应用程序作为 HostElement 运行它,这很好用,但用户必须安装 .NET,所以我没有足够的时间编写相同的 Web 应用程序。我看到 WebGui 的表单设计与 Winform 应用程序相同,我想知道是否可以直接将我的表单复制到 WebGui 应用程序中而无需修改。 - KF2
4
为什么这篇回答被标记为答案,它没有直接回答问题,而下面一篇直接回答了问题的答案却没有被标记且遭到了投票否决?这是一个有趣的评论并值得一读,但似乎不是一个实际的答案。 - David Wylie
2
我认识到WPF已经取代了WinForms并且更加强大。但是WinForms远非无用。这就像说,今天使用UWP因为WPF是无用的一样。 - Ronnie Overby
显示剩余4条评论

0

我认为这个问题与这个问题非常相似:

在.NET中是否有可能将WinForm转换为WebForm?

如前所述,唯一的运行应用程序“原样”在浏览器内的方法是通过使用某些ActiveX控件,这将需要IE + .NET Framework。 有一些工具可以用来自动迁移应用程序到Web,但总会涉及一些手动工作,并且它不会像从头开始构建Web应用程序那样。


0

我曾经使用过VWG,但现在它不再是一个选项了。这里没有提到的一个选择是WiseJ,这是一个专有框架,仍在2022年得到积极开发和支持。将WinForms应用程序转换为WiseJ或像使用WinForms一样开始使用WiseJ都相当简单。

它们的网站链接在这里:https://wisej.com


0
在我有限的Visual WebGui经验中,它是一项相当酷的技术。简单来说,据我所知,您可以使用Windows Forms开发IDE创建符合HTML5标准的ASP.NET客户端/服务器Web应用程序...不仅仅是网站或页面,而且外观和感觉非常像Windows桌面应用程序。它通过将Winforms控件转换为客户端jquery代码,并将大部分可执行代码存储在服务器端来实现这一点。
我已经用它创建了一些简单的测试应用程序,但也有一些注意事项。首先,要创建一个“漂亮”的网站,您需要重新考虑Winforms布局,使其具有网站的特点,例如标题、侧边栏等。这是一种不同的范例,用户期望在网站上看到某些东西。好消息是,这种调整通常可以通过简单地操作控件来完成;例如,Panel控件可以成为侧边栏或标题的容器。您还可以创建“主题”,这类似于控件的皮肤,以修改外观。
另一个需要考虑的因素是,在 Web 环境中,像弹出对话框这样的事件行为与 Winforms 不同。在 Winforms 中,程序执行会暂停,直到用户点击“确定”按钮或其他按钮。在 Visual WebGui 中,所有执行都发生在服务器端;因此,程序执行将继续进行,而不必等待用户输入。但是,可以通过为弹出框创建 Form.Close 处理程序来处理这种情况。但是,这些差异需要牢记在心。
您还必须考虑对象布局异常。Visual WebGui 通常很好地模仿了 Winforms 的所见即所得的好处:对象通常在网页上出现的位置与您在环境中放置它们的位置非常接近。但并非总是如此;有时需要调整对象填充、边距等才能获得正确的布局。尽管如此,这通常比使用 CSS 或 div 对象繁琐地更容易。

2
Visual WebGui不再开发/支持:在Codeplex关闭之前,唯一可以找到它的地方是这里:(https://archive.codeplex.com/?p=visualwebgui)。 - RJ Kelly

0

那上面的价格完全不合理啊。每个用户70美元?天哪。我会说这只能作为最后选择。 - Pangamma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接