When developing with Mono for an app to be run on Windows and Mac OSX (and maybe Linux) which would you suggest, WinForms or GtkSharp for the GUI and why?
Specific examples and success/horror stories would be much appreciated.
When developing with Mono for an app to be run on Windows and Mac OSX (and maybe Linux) which would you suggest, WinForms or GtkSharp for the GUI and why?
Specific examples and success/horror stories would be much appreciated.
Cross platform development is a nice idea, but to be completely honest I have never seen an application that looks really good outside of its native environment. That is why I think, that if you really want to offer good user experience you should use native toolkits on all platforms that you want to support.
Of course, if you just want a proof of concept, then WinForms on a Mac (or Linux) are alright but if you want an application that competes against other native solution then you really should consider writing a separate native frontend for each supported platform.
A good example how that was done is MindManager from Mindjet. Their Mac version is a full, from scratch rewrite of the interface. The result is an application that gives Mac users the experience that they learned to expect on their platform.
So, back to Mono. There are Cocoa bindings in Mono. Personally, I have never tried using them, but if you want to target Macs with your application, they are certainly worth a look. It would be really great if they could be regarded as a valid choice for UI development on a Mac.
When deciding whether or not to use a cross-platform architecture, gague your requirements of having a tight UI against agility toward change and development time. Using a platform-specific UI framework is (almost) always going to give you better looking and better performing results than you'll get from a cross-platform one.
GtkSharp requires X11 on Mac OS X. Mac users will find that off-putting. I haven't tried Winforms on OS X, but mono's Linux winforms support was pretty immature (buggy) and slow. I don't think there is a mature .net GUI toolkit for OS X at this point, at least nothing at the level of Swing or SWT.
What platform will most of the users of your app have? If most of the users will be Windows users, use Winforms, but if most of the users will be Linux users, use Gtk#. I wouldn't know which one works best on OSX.
Read this article also: http://www.mono-project.com/Gui_Toolkits