2013-04-27 54 views
10

我正在使用Visual Studio,winforms和我使用openTK的應用程序。最近我想過讓它跨平臺。我要使用Mono,因爲我不知道其他類似的東西。我完全沒有使用GTK +的經驗。在我的應用程序中,目前有4個窗口(當然以後會有更多)。我想在Windows,Linux和OS X中快速開發應用程序。我讀過,GTK +比WinForms更好,但仍不確定選擇哪種。所以,我應該重製一切爲GTK +或保持與WinForms和爲什麼?另外,有沒有工具可以幫我做這個工作?我應該用GTK +而不是WinForms for Mono重寫GUI嗎?

+0

[WinForms vs GtkSharp with Mono]可能重複(http://stackoverflow.com/questions/751884/winforms-vs-gtksharp-with-mono) – 2013-04-27 17:00:49

+1

Mono正在獲得很多動力,尤其是.NET核心5拋棄他們的支持。作爲一個UI開發選項,ASP.NET也正在成爲一個更大的玩家,並且會和Mono一起玩。 – VoteCoffee 2014-12-23 14:33:34

+0

在與WinForms拼搏之後,我可以告訴你GTK +肯定好多了。同樣作爲獎勵,每個GTK +書面應用程序都可以在單獨的文件中配置程序員沒有覆蓋的東西。例如。爲每個文本小部件啓用Emacs移動鍵。 – 2015-08-21 12:06:29

回答

14

老實說,你將需要告訴我們更多關於您的觀衆 /目標市場提供了極大的答案,但我的$ 0.02,從一些開發經驗有是GUI開發單在桌面上是一個多 - 如果你想要做到「正確」,那就是目標。您將需要異常模塊化地開發共享後端,然後在每個平臺上編寫一次UI。

的Windows

Windows.Forms的上單實現是一個偉大的柺杖,如果您的應用處於起步階段,讓您以適用於Windows 立即並在OS X和Linux有點殘缺的方式部署。但是,請注意,我已經被告知IRC,Mono上的Windows.Forms開發實質上已經死亡。舊的錯誤沒有得到更新,並作爲例如,我碰到的SelectionBackColor在RichTextBox中不工作的OS X(它在一個lib單問題用來在OS X Windows.Forms的)測試的幾分鐘之內。儘管它在那裏,但對於快速實用程序來說也許很好,您可以在其中限制代碼(有關示例,請參閱問題here)。

OS X

是面向OS X,如果你有一個真正的,商業的,最終用戶的應用程序,你將需要習慣,嗯,有Interface Builder接口。 我應該清楚這裏使用的XCode和Interface Builder 絕對需要你有機會獲得一個機器上運行OS X.否則,你堅持Windows.Forms的或最好,我認爲,GTK#。

Xamarin已經做了大量的工作,使得它的IDE存根到內置的XCode原生UI的連接。這就是他們爲iOS開發所做的。它工作得很好,雖然文檔很薄弱。有一個great video from 2011 from Michael Hutchingson describing this process,但我想它在牙齒上變長了(即「老」)。 (Direct link to video

我假設界面生成器也是您的唯一真正的選擇,如果你想要指定的Mac應用程序商店。但是,看起來,這是一個本地用戶界面,它被嵌入到你的C#代碼中,這是所有考慮事項的一個很好的折中方案。

Linux的

我還沒有真正有針對性的Linux操作系統。看起來像Gtk#會是一個天作之合,但我在這裏沒有太多實際的幫助。我的東西建立在Windows.Forms中,並且存在粗糙的邊界,就像在OS X中一樣。如果我更加認真,我會從Gtk#開始,這也是MonoDevelop具有GUI RAD的地方。嚴重的,成熟的,跨平臺的Gtk#應用程序

快速記下

例子:Banshee使用Gtk#目標OS X或Windows(阿爾法),和Linux。您可以通過檢查its mailing list和其他資源來獲得一些很好的背景,以瞭解在大型應用程序跨平臺上使用Gtk#有多困難。

對不起這個消息是不是變得更容易。沒有銀彈/單一的正確答案。


201607更新:我想答案是慢慢成爲使用Xamarin.Forms目標跨平臺的。你現在可能仍然被卡在一個單獨的Mac界面上,但有理由相信,在某些時候也會有Xamarin.Forms支持;見下文。

不幸的是,如果你的目標的Linux,我想你還是在同一條船上,你以前現在。

  • Windows:您現在可以使用Xamarin.Forms and UWP
  • 的MacOS:你仍然在本質上是相同的地方,但我有一個Xamarin的員工告訴我,上週末Xamarin.Forms是非官方發展爲OS X的,我相信this is the repo on GitHub。 (甚至有tvOS的分支。)
+1

感謝您分享您的體驗。 – 2013-12-25 07:29:27

+0

爲什麼你不想考慮使用JavaFX?它支持跨平臺構建動態GUI。 http://docs.oracle.com/javafx/ – 2017-07-03 09:37:50

+0

@OlowookereEmmanuel好了,OP肯定是使用和熟悉微軟的一種開發環境,並具體詢問GTK#與單聲道。儘管Java和C#經常感覺非常相似,但是從一個移到另一個也會需要認真的頭部重新編程,並且不允許您利用以最喜歡的語言編寫的庫 - 在這裏是C#。也就是說,JavaFX可能是一個有趣的選擇。希望它比Swing更好! ; ^) – ruffin 2017-07-03 14:16:06

10

我建議你考慮你的目標受衆是什麼。使用像GTK#這樣的框架來編寫UI似乎是一個好主意,但對普通用戶而言,您的應用程序看起來不像其他Windows/OSX應用程序,這些應用程序很容易阻止人們使用它(除非其他方式非常特殊)。

要做到這一點(由於時間/預算約束可能無法實現)的最佳方法是將您的應用程序邏輯放在單獨的程序集中,然後使用Windows的Winform(或WPF)爲每個平臺編寫UI, MonoMac/Cocoa for OSX和GTK#for Linux。它也不會限制您使用可能會降低用戶體驗的所有平臺上可用的功能。

+2

提及WPF,其中IMO是唯一真正可行的在Windows中製作嚴肅的桌面用戶界面的方法。 – 2013-05-11 15:50:29

+0

第二個在本地用戶界面上。如果你不需要本地用戶界面,爲什麼不把它作爲一個網絡/瀏覽器應用程序呢?每個現代化的平臺都可以做HTML,並且比GTK +支持更好。 – Mathieson 2015-08-04 21:27:12

1

我面臨着類似的問題,現在 - 但卡爾 - 約翰說,大約保持應用程序邏輯分離將使任務變得更加簡單。查看一個ViewModel模式(MVVM),並且您將有更少的代碼來重寫和測試每個平臺,因爲中央邏輯變成UI無關。

相關問題