2013-05-10 67 views
3

我是編程新手,我有興趣使用Mono在C#中開發應用程序。我想選擇GTK +以外的GUI框架:WinForms或XWT(https://github.com/mono/xwt)。Mono的Winforms或XWT GUI設計器?

有設計師設計的WinForms圖形用戶界面?關於XWT的一個呢?我使用MonoDevelop作爲我的IDE。

如果沒有WinForms或XWT的設計人員,您是否認爲可以使用Visual Studio 2012在WinForms中使用.NET編寫C#應用程序,並在我想部署時使用Mono進行編譯?

+0

爲什麼厭惡gtk#? – ruffin 2013-05-11 15:11:23

+0

您當然可以在Visual Studio或SharpDevelop中使用WinForms設計器編寫應用程序,然後使用MonoDevelop或xbuild構建生成的項目。您不需要設計人員在Mono中編譯WinForms應用程序。 – Justin 2013-06-14 03:54:07

回答

5

這可能是兩個問題。

1.)我的Mono GUI RAD選項是什麼?

如果你想要一個單一的GUI RAD你只有選擇GTK#據我所知。

如果你想有一個GUI RAD的Windows.Forms的,這就是所謂的Visual Studio(或潛在VS Express的桌面在Win8中),需要的MonoDevelop的的Windows /在外打工。 ;)另一方面,這是一個真的很好 GUI RAD。

2)什麼GUI框架是最適合編寫一次,到處運行?

Gtk#。不幸的是,Mono的Windows.Forms不能很好地工作,而且是一個死衚衕的技術。見here for a similar question

正如我在回答中何況還有,如果你想要寫一個程序,在單面向多個操作系統(或者你是Linux爲中心),你可能想Gtk#的。如果您想創建傳統的客戶端應用程序,請準備在每個目標平臺上重寫您的GUI。

編輯:在類似主題here少裙帶關係問題。

EDIT2:有一個單聲道的WinForms設計師,我忘了here,但其描述爽快地承認,「不幸的是,設計師還沒有準備好正確使用」,他們指的is from 2007阻塞漏洞,所以沒有太大的幫助。

祝你好運!

+0

「不幸的是,Mono的Windows.Forms不能正常工作,而且是一個死衚衕的技術。」並非100%真實。有很大的兼容性問題,但是一些應用程序在Mono WinForms(甚至是商業版)上運行良好。 – 2013-05-13 03:25:40

+0

對我來說,「死路一條」的意思是「不再積極發展」,當我一直在[Mono的IRC頻道](http://www.mono-project.com/IRC)和非常安靜的[WinForms bug列表](https://bugzilla.xamarin.com/buglist.cgi?product=Class%20Libraries&component=Windows.Forms&resolution=---),似乎確實如此。它的大部分工作,但它是越野車,並在我的經驗,*非常*馬車很快,需要醜陋的codearonds。你有沒有一個很好的跨平臺的WinForm應用程序可以作爲例子? [Banshee](http://banshee.fm/),例如,是一個偉大的Gtk#app;很想看到一個WinForms Mono等價物。 – ruffin 2013-05-13 13:41:08

+0

[JArchitect](http://jarchitect.com)。由於Banshee在Windows上很醜,我認爲這不是一個好例子。 – 2013-05-13 23:14:17

4

縱觀單的電流方向由誰帶動Xamarin,他們促進了每個平臺的原生UI。意味着您將業務流程作爲單獨項目和GUI爲每個目標平臺編寫。至於桌面,使用XWT更好,因爲您將使用類似的API訪問每個平臺的本地用戶界面,而不會失去爲每個平臺添加更多高級用戶界面的能力。 XWT API基於GTK#API(很容易讓Xamarin人遷移他們現有的應用程序),並且提供了許多用於每個目標平臺的通用窗口小部件/控件(WPF for Windows,Cocoa for Mac,GTK for Linux的)。此外,它更容易添加前進/自定義部件和XWT託管,因爲它確實喜歡在每個平臺上託管的本機工具包

更新:

關於WinForm的已經回答,因爲XWT似乎沒有設計師還,但部署,只需創建項目XWT GUI(共享所有XWT GUI),XWT.WPF(用於Windows的XWT啓動器)和XWT.Cocoa(用於Mac的XWT MonoMac應用程序)。但是每個啓動器只能在每個平臺上編譯

+0

所有你說的都是真的,但你沒有回答這個問題 – knocte 2013-05-25 08:03:57

+0

@knocte,謝謝你的評論,更新了答案 – 2013-06-01 14:00:41

+0

XWT很棒,但GTK缺乏多行文本輸入是Linux上的一個真正的顯示限制。作爲一個老式的單聲道傢伙,當Mono技術在OS X和Windows上工作得比在Linux上更好時,我發現它很瘋狂。 – Justin 2014-05-06 15:29:47