我应该使用 GTK+ 而不是 WinForms for Mono 重写 GUI 吗?

2023-12-21

我正在使用 Visual Studio、winforms 制作一个应用程序,并且使用 openTK。最近我想让它跨平台。我将使用 Mono,因为我不知道其他类似的东西。而且我完全没有 GTK+ 的经验。在我的应用程序中,目前有 4 个窗口(当然将来会有更多)。我想让应用程序在 Windows、Linux 和 OS X 上运行得更快。我读到,GTK+ 比 WinForms 更好,但仍然不确定该选择哪一个。那么,我应该为 GTK+ 重新制作所有内容还是继续使用 WinFormswhy?另外,有没有什么工具可以为我完成这项工作?


老实说,您需要告诉我们更多关于您的情况audience/预期市场提供了一个很好的答案,但是我的 0.02 美元来自一些开发经验,如果你想做“正确”的话,桌面上 Mono 的 GUI 开发是一个多目标的事情。您将需要以异常模块化的方式开发共享后端,然后为每个平台编写一次 UI。

Windows

如果您的应用程序还处于起步阶段,在 Mono 上实现的 Windows.Forms 是一个很好的拐杖,它允许您针对 Windows立即地并在 OS X 和 Linux 上以某种有点残缺的方式进行部署。但请注意,我在 IRC 上被告知 Mono 上的 Windows.Forms 开发基本上已经死了。旧的错误没有得到更新,例如,在测试的几分钟内,我遇到了 SelectionBackColor 在 OS X 上的 RichTextBox 中无法工作的情况(这是 OS X 上用于 Windows.Forms 的 Mono 使用的 lib Mono 中的问题)。很明显它就在那里,也许对于快速实用程序很有用,您可以在其中围绕其限制进行编码(请参阅问题here https://stackoverflow.com/questions/12421900/举个例子)。

OS X

对于针对 OS X 的目标,如果您有一个真正的商业最终用户应用程序,您将需要习惯,嗯,与界面生成器 http://docs.xamarin.com/guides/ios/advanced_topics/xib_code_generation. 我应该在这里明确指出,使用 XCode 和 Interface Builder绝对需要您可以访问运行 OS X 的机器。否则,您将不得不使用 Windows.Forms,或者我认为最好是 Gtk#。

Xamarin 在使其 IDE 与 XCode 中内置的本机 UI 建立连接方面做得非常出色。 iOS 开发也是如此。尽管文档很薄弱,但它运行得相当好。有一个Michael Hutchingson 于 2011 年发布的精彩视频描述了这一过程 http://mjhutchinson.com/journal/2011/06/monomac_video_ndc_2011,尽管我认为它已经过时了(即“旧”)。 (直接链接到视频 http://ndc2011.macsimum.no/mp4/Day3%20Friday/Track4%201500-1600.mp4)

我假设如果您想瞄准 Mac App Store,Interface Builder 也是您唯一真正的选择。但是看,它是一个与 C# 代码存根的本机 UI,综合考虑,这是一个很好的妥协。

Linux

我并没有真正针对Linux。看起来 Gtk# 是一个自然的选择,但我在那里没有太多的实际帮助。我的东西是在 Windows.Forms 中构建的,但也有一些粗糙的地方,就像在 OS X 中一样。如果我更认真一点,我会从 Gtk# 开始,而 MonoDevelop 也有它的 GUI RAD。

严肃、成熟、跨平台 Gtk# 应用程序的示例

快速说明:Banshee http://banshee.fm/ uses Gtk# https://live.gnome.org/Banshee/Roadmap以 OS X、Windows (alpha) 和 Linux 为目标。通过查看以下内容,您可以了解在大型应用程序跨平台上使用 Gtk# 的难度。它的邮件列表 https://mail.gnome.org/mailman/listinfo/banshee-list和其他资源。

抱歉,这个消息并不容易。没有灵丹妙药/唯一正确的答案。


201607 更新:我认为答案正在慢慢变成使用 Xamarin.Forms 来实现跨平台。目前,您可能仍需要编写单独的 Mac 界面,但有理由相信它在某个时候也会支持 Xamarin.Forms;见下文。

不幸的是,如果您的目标是 Linux,我认为您现在仍然处于与以前相同的状态。

  • Windows:您现在可以使用Xamarin.Forms 和 UWP https://developer.xamarin.com/guides/cross-platform/windows/universal/.
  • macOS:基本上还是在同一个地方,但上周末一位 Xamarin 员工告诉我,Xamarin.Forms 正在为 OS X 进行非正式开发。我相信这是 GitHub 上的存储库 https://github.com/xamarin/Xamarin.Forms/tree/mac。 (甚至还有一个 tvOS 的分支。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该使用 GTK+ 而不是 WinForms for Mono 重写 GUI 吗? 的相关文章

随机推荐