c# - 用于跨平台 GUI 开发的最佳技术是什么?

标签 c# mono cross-platform freepascal lazarus

<分区>

我想开始一个新的(开源)项目,我希望它在 Windows 和 Mac OS X 上是跨平台的(Linux 也不错!)

我愿意为每个平台开发单独的前端,但核心逻辑应该共享。

我需要以下内容:

  • 最好是原生 GUI 小部件集
  • FTP 连接(独立于平台的包装器)
  • TreeListView(同样,最好是独立于平台的包装器)

我已经对此进行了一段时间的研究,我发现这些解决方案非常有吸引力:

  • Mono,在 Windows 上使用 WinForms,在 OS X 上使用 MonoMac
  • Lazarus (FreePascal) 拼箱

单声道专业人士:

  • 使用 C#,一种非常好用的语言
  • 拥有适用于 OS X 和 Windows 的小部件集

单声道缺点:

  • Mono Framework 是我的应用程序的依赖项

Lazarus 与 FPC 专家:

  • Pascal 也是一种很棒的语言,我知道如何使用 FTP 的 Indy 控件。
  • 拥有VirtualTreeview,这是我见过的最好的树 ListView 控件!
  • 可以交叉编译
  • 还有适用于 Windows 和 OS X 的小部件集
  • 没有框架依赖!

具有 FPC 缺点的 Lazarus:

  • 看来支持快要死了,但也许那只是我。
  • VirtualTreeview 似乎只有适用于 Windows 的端口。
  • 可执行文件可能会变得非常大,但可以修复。

我还研究了带有 FireMonkey 的 Delphi XE2,但它不使用 native 控件,而且由于抗锯齿功能,它看起来也不是 native 的。 :(

现在,我最担心的是,我似乎找不到适用于 Windows 和 OS X 的 TreeListView!我真的需要一个带列的 TreeView 。

重点在于具有跨平台 TreeListView 的技术,该技术有效且仍受支持。

感谢您的宝贵时间!

最佳答案

我强烈建议不要使用 Pascal。
这是一种即将消亡的语言,正如您所注意到的那样,支持会随着时间的推移而减少。
使用更现代的语言,提出问题并获得答案的机会要大得多。

.NET/Mono 是一个不错的选择。
.NET 在 WPF 中有 TreeView,但它没有在 Mono 中实现,据我所知,它永远不会。

我建议检查的另一个选项是 Java(或者更好 - 其他基于 JVM 的语言,例如 Scala)。
非常跨平台(可能是最跨平台的语言),支持很好,语言还在不断发展(虽然卡了几年),语法+代码风格和C#很像(不包括对LINQ的支持)等),这使得从一个转移到另一个非常简单。
JVM 是先决条件,但这并不是什么大问题,因为它已经安装在大多数机器上。

关于c# - 用于跨平台 GUI 开发的最佳技术是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12130105/

相关文章:

c# - 如何管理多个 OrderByDescending 条件?

cross-platform - 有没有一种很好的方法可以在 iOS 中模拟 Android 的片段模式?

c# - 在 C# 中获取内存中下一个对象大小的空间

c# - png格式的桌面捕获

c# - 我应该使用什么 .NET 类来表示子网及其掩码?

c# - 统一: Android touch on Gui texture

c# - Uri.MakeRelativeUri 错误地处理 ../

c# - 在 Mac 上部署没有框架的 Mono 应用程序

c++ - 如何在 C/C++ 中监听 stderr 以发送回调?

gcc - 构建 GCC 交叉编译器(从 "Linux"到 "Windows")