Alternative to Programming GUI over linux
If you have some experience with C#, I would recommend the following: develop your application on Windows for Microsoft.NET. Use System.Windows.Forms (not WPF, not Metro). If your application does not use any Windows-specific code (like direct manipulation with Windows messages), no P/Invoke,...
Cross-Platform .NET Development: Using Mono, Portable.NET, and Microsoft .NET - By Mark Easton, Jason King