我正在使用Visual Studio,WinForms的应用程序,我使用openTK。 最近,我想过使得跨平台的。 我将使用单声道,因为我不知道别的类似。 我必须跟GTK +完全没有经验。 在我的应用程序,目前有4个窗口(当然还有今后将更多)。 我想使应用程序快速在Windows,Linux和OS X.我已阅读,GTK +比的WinForms好,但仍然不知道选哪个。 所以,我要重拍家居GTK +或留在WinForms和为什么 ? 此外,有没有任何工具,它会为我做这项工作?
Answer 1:
老实说,你将需要更多地告诉我们,你的受众 /目标市场提供了极大的答案,但我的$ 0.02,从一些开发经验有是GUI开发单在桌面上是一个多目标的事情,如果你想做“正确”。 你将需要开发共享后端格外模块化,然后每个平台编写UI一次。
视窗
作为单实现Windows.Forms的是一个伟大的拐杖,如果您的应用处于起步阶段,让您立即针对Windows和在OS X和Linux有点残缺的方式部署。 但是请注意,我已经被告知在IRC上单Windows.Forms的发展基本上是死的。 旧的错误没有得到更新,并作为例如,我碰到的SelectionBackColor在RichTextBox中不工作的OS X(它在一个lib单问题用来在OS X Windows.Forms的)测试的几分钟之内。 整洁它的存在,也许是快速的实用程序,您可以编写围绕它的局限性(见问题好这里的例子)。
OS X
对于针对OS X,如果你有一个真正的,商业的,最终用户的应用程序,你将需要习惯,嗯,有交互界面生成器 。 我要明确这里使用的XCode和Interface Builder 绝对需要你有机会获得一台运行OS X.否则,你坚持Windows.Forms的或最好,我认为,GTK#。
Xamarin已经做了大量的工作,使得它的IDE,踩灭了建在了XCode原生UI的连接。 这就是他们如何做到这一点的iOS开发也是如此。 它的工作原理相当不错,虽然文档较弱。 有一个从2011年描述这个过程伟大的视频迈克尔Hutchingson ,但我想这是越来越长的牙齿(即“老”)。 ( 直接链接到视频 )
我假设Interface Builder中也只有你真正的选择,如果你想要指定的Mac应用程序商店。 但是你看,这是一个的存根到您的C#代码,这是,所有的事情考虑,一个伟大的妥协原生UI。
Linux的
我还没有真正有针对性的Linux操作系统。 好像Gtk#的将是一个天作之合,但我没有太多的动手帮助那里。 我的东西建立在Windows.Forms的,有粗糙的边缘,就像在OS X.如果我得到了更严重的,我会用Gtk#的开始,而这也正是MonoDevelop中有其GUI RAD为好。
严重的,成熟的,跨平台的Gtk#应用程序示例
快速注: 女妖用Gtk#的目标OS X或Windows(阿尔法),和Linux。 你可以得到它是多么的困难通过检查出使用GTK#大型应用程序的跨平台上一些伟大的背景下其邮件列表和其他资源。
对不起这个消息是不是变得更容易。 没有银弹/唯一正确的答案。
201607更新:我想答案是慢慢成为使用Xamarin.Forms目标跨平台的。 你可能仍然被卡住写,现在一个单独的MAC接口,但我们有理由相信,将有Xamarin.Forms在某些时候太支持; 见下文。
不幸的是,如果你的目标的Linux,我想你还是在同一条船上,你以前现在。
- 视窗:您现在可以使用Xamarin.Forms和UWP 。
- MacOS的:你仍然在本质上是相同的地方,但我有一个Xamarin的员工告诉我,上周末Xamarin.Forms是非官方发展为OS X的,我相信这是在GitHub回购 。 (甚至还有tvOS一个分支。)
Answer 2:
我建议你考虑你的目标受众是什么。 编写使用像GTK#框架UI似乎是一个好主意,但对普通用户的应用程序不会像他们的其他Windows / OSX的应用,这可以轻松地使用它停止人(除非它真的很特殊的一些其他方式)。
要做到这一点(这也许是不可能的,由于时间/预算约束),最好的办法是把你的应用程序逻辑在单独的程序,然后写UI为每个平台,使用WinForm的(或WPF)的Windows, 的MonoMac /可可的OSX和GTK#Linux操作系统。 它也不会限制你使用所有可用的平台,这会降低用户体验了很多功能。
Answer 3:
现在我面临着类似的问题 - 但卡尔 - 约翰说,大约保持应用程序逻辑分离将使任务变得更加简单。 寻找到一个视图模型模式(MVVM),你就会有更少的代码,重写和测试每个平台,为中心的逻辑就变得不可知的UI。