【问题标题】:Winforms or XWT GUI designer for Mono?Mono 的 Winforms 或 XWT GUI 设计器?
【发布时间】:2023-03-22 09:20:02
【问题描述】:

我是编程新手,我对使用 Mono 在 C# 中开发应用程序很感兴趣。我想选择 GTK+ 以外的 GUI 框架:WinForms 或 XWT (https://github.com/mono/xwt)。

是否有设计 WinForms GUI 的设计师? XWT 的呢?我使用 MonoDevelop 作为我的 IDE。

如果没有 WinForms 或 XWT 的设计者,您认为可以使用 Visual Studio 2012 使用 WinForms 在 .NET 中用 C# 编写应用程序,然后在我想部署时使用 Mono 编译它吗?

【问题讨论】:

  • 为什么厌恶 gtk#?
  • 您当然可以在 Visual Studio 或 SharpDevelop 中使用 WinForms 设计器编写应用程序,然后使用 MonoDevelop 或 xbuild 构建生成的项目。您不需要设计器在 Mono 中编译 WinForms 应用程序。

标签: c# .net winforms user-interface mono


【解决方案1】:

这可能是两个问题。

1.) 我的 Mono GUI RAD 选项有哪些?

据我所知,如果您想要一个 Mono GUI RAD,您的唯一选择是 GTK#。

如果你想要一个用于 Windows.Forms 的 GUI RAD,它被称为 Visual Studio(或可能在 Win8 中用于桌面的 VS Express),并且需要 Windows/在 MonoDevelop 之外工作。 ;) 从好的方面来说,它是一个非常好的 GUI RAD。

2.) 哪种 GUI 框架最适合一次编写并到处运行?

Gtk#。不幸的是,Mono 的 Windows.Forms 不能很好地工作并且是一个死胡同。见here for a similar question

正如我在回答中提到的那样,如果您想在 Mono 中编写一个针对多个操作系统的实用程序(或者您以 Linux 为中心),您可能确实需要 Gtk#。如果您想创建一个传统的客户端应用程序,请准备在每个目标平台上重写您的 GUI。

编辑:关于类似主题here的较少裙带关系问题。

Edit2:一个 Mono WinForms 设计器,我忘记了 here,但它的描述很容易承认,“不幸的是,设计器还没有准备好正确使用,”以及阻塞错误他们指的是is from 2007,所以帮助不大。

祝你好运!

【讨论】:

  • “不幸的是,Mono 的 Windows.Forms 不能很好地工作,而且是一个死胡同。”不是 100% 正确的。存在严重的兼容性问题,但某些应用程序在 Mono WinForms 上运行良好(甚至是商业应用程序)。
  • “死胡同”对我来说意味着“不再积极开发”,当我在Mono's IRC channels 和非常安静的WinForms bugs list 上时,似乎确实如此。大部分都有效,但它有问题,而且根据我的经验,非常 问题非常快,需要丑陋的代码。你有一个很好的跨平台 WinForm 应用程序可以举个例子吗? Banshee,例如,是一个很棒的 Gtk# 应用程序;很想看到 WinForms Mono 等价物。
  • JArchitect。由于 Banshee 在 Windows 上很丑,我认为这不是一个很好的例子。
  • @ruffin - 我相信Plastic 是基于 Windows 窗体的(或者至少曾经是)
  • @LexLi -- Fwiw,CodeGears(JArchitect 开发者)aren't using WinForms nowIn our first version we used the Mono Winforms implementation to avoid big changes on our code base... After contacting some Objective C developers... we discoverd our big mistake... We decided for our second version to use MonoMac and **remove all dependencies with System.Windows.Forms and System.Drawing libraries to use Cocoa instead**. 我仍然会建议 GTK# 用于 xplat,并且,正如 CodeGears 发现的那样,原生针对“严肃”应用的每个平台的 UI 分支。
【解决方案2】:

着眼于由 Xamarin 驱动的 mono 的当前方向,他们为每个平台推广原生 UI。意味着您将业务流程编写为每个目标平台的单独项目和 GUI。至于桌面,最好使用 XWT,因为您将使用类似的 API 来访问每个平台的原生 UI,而不会失去为每个平台添加更多高级 UI 的能力。

XWT API 基于 GTK# API(方便 Xamarin 人员迁移他们现有的应用程序),并为每个目标平台(Windows 的 WPF、Mac 的 Cocoa、Linux 的 GTK)提供了许多通用的小部件/控件)。此外,更容易添加高级/自定义小部件并托管在 XWT 中,因为它实际上就像托管在每个平台的本机工具包中一样

更新:

关于 Winform 已经得到解答,对于 XWT 似乎还没有设计器,但对于部署,只需创建项目 XWT GUI(共享所有 XWT GUI)、XWT.WPF(Windows 的 XWT 启动器)和 XWT.Cocoa(XWT MonoMac 应用程序)苹果)。但是每个启动器只能在每个平台上编译

【讨论】:

  • 你说的都是真的,但你没有回答问题
  • XWT 很棒,但在 GTK 上缺少多行文本输入是 Linux 上真正的障碍。作为一个老 Mono 人,当 Mono 技术在 OS X 和 Windows 上比在 Linux 上运行得更好时,我觉得这很疯狂。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-04
  • 2023-03-03
  • 2012-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多