GTK#和Windows窗体有什么区别?他们完全不同吗?
由于
答案 0 :(得分:23)
Gtk#:
GTK#是Gtk +工具包的.NET绑定。该工具包是用C语言编写的,用于提高速度和兼容性,而GTK#binding提供了一个易于使用,面向对象的API,可供管理使用。它正在由Mono项目积极开发,并且有各种可用的实际应用程序(Banshee,F-Spot,Beagle,MonoDevelop)。
通常,GTK#应用程序是使用MonoDevelop编写的,它为创建GTK#GUI提供了可视化设计器。
平台:Unix,Windows,OSX
优点:
缺点:
Windows.Forms是Microsoft为Win32工具包开发的绑定。作为数百万Windows开发人员(尤其是内部企业应用程序)使用的流行工具包,Mono项目决定生成兼容的实现(Winforms),以允许这些开发人员轻松移植他们的应用程序以在Linux和其他Mono平台上运行。
.Net实现是对Win32工具包的绑定,而Mono实现是用C#编写的,允许它在多个平台上工作。大多数Windows.Forms API都适用于Mono,但是某些应用程序(尤其是第三方控件)偶尔会绕过API和P / Invoke直接进入Win32 API。这些调用可能必须改为在Mono上工作。
通常,Winforms应用程序是使用Microsoft的Visual Studio或SharpDevelop编写的,它们都提供了用于创建Winforms GUI的可视化设计器。
平台:Windows,Unix,OSX
优点:
缺点:
答案 1 :(得分:8)
它们都是GUI工具包,每个都有自己的优点和缺点。根据我的经验:
简而言之,我不建议使用Winforms(除非有充分的理由没有比.NET FW更多的依赖关系),而是使用Gtk#或WPF。
答案 2 :(得分:2)
它们是用于创建具有不同来源的窗口化应用程序的不同图形工具包。
GTK#是GTK库的绑定,主要用于linux / unix。它也适用于Windows,但它不是它设计的原生环境。
Winforms是另一个工具包,这个工具包来自微软。
它们是完全不同的API,用于实现相同的结果,但每个API更适合于平台。
如果您正在寻找.net中的多平台窗口,Qt现在可能是LGPLed的一个选项。
答案 3 :(得分:0)
简而言之:是的
两者都是GUI-Tookits,但WinForms(如名称所示)主要是为windows开发的。 GTK是为Gimp开发的,是一种多os gui工具包的方法。
如果您的应用程序仅在Windows上运行,则在大多数情况下您应该使用WinForms。
如果您的应用程序将在不同的操作系统下运行(如linux,bsd,windows,macos等),那么您更喜欢GTK。
要获得更好的解释,请查看here。