Windows Forms是旧技术吗?

时间:2009-12-16 18:05:26

标签: wpf winforms

是时候为我的项目编写GUI了,我想知道要使用什么技术。我在.NET 1&amp ;;中完成了大部分.NET GUI开发。 2,所以我知道Windows Forms相当不错。我隐约知道WPF,但尚未尝试“进入它”。

Windows窗体死机还是死机? WPF是一项很好的学习技术吗?它是未来,只是一个阶段,还是一种可以与Windows Forms一起携手合作的技术?

此外,任何经验都会很好听,特别是那些广泛使用过的人。您是如何在两个框架中找到实现类似功能的?

11 个答案:

答案 0 :(得分:45)

答案 1 :(得分:11)

WinForms没有死亡或死亡......他们无法提供与WPF相同的用户体验(没有大量工作)。它们只是旧技术。

WPF是一项很好的学习技术。它提供了以更少的工作提供更丰富的用户体验的能力。

使用WPF的模型肯定与WinForms不同。我使用过两者(WinForms比WPF / Silverlight更重要),对我来说最困难的过渡是:

  1. XAML,如果您有使用其他标记语言(如MXML)的经验,那就没差了。

  2. 数据绑定

  3. 接口事件处理(MouseOver效果,时间线等)

答案 2 :(得分:4)

WinForms远未死亡/死亡。 WPF只是解决UI的一种新方法,因为它促进了WinForms中更难的事情。将UI后面的模型与实际用户界面分开,以便轻松测试是一个重要因素。

这绝对值得学习,但请务必学习“WPF方式”来创建屏幕,而不仅仅是将WinForms方式融入其中。这是一种不同的编码方式。

答案 3 :(得分:3)

2016年的观点:

我并不经常主张在这个问题上提问,但认为结语可能适合这个问题。为什么?因为即使是现在(2016年),我也听到公司环境中的开发人员仍在提出这个问题。

是的,七年后,WinForms在企业环境中仍然存在,并且仍然受到Microsoft的支持。 Google Trends显示自2005年中期以来缓慢,稳定的利息下降,目前的利息约为2005年的三分之一。

WPF在2009年引起轰动,但从未完全接管新UI开发的事实标准。谷歌趋势显示WPF利率从2009年至2011年达到峰值,然后比WinForms下降得更快。目前的搜索兴趣大约是2011年的一半,但仍然几乎是WinForms当前搜索兴趣的两倍。

那么开发人员现在使用什么?基于Web的用户界面越来越受欢迎,主要是由于移动浏览的兴起。您可以争论编写Web UI的最佳方式(AngularJS + WebAPI?ASP.NET MVC?React?所有这些都在Google趋势上呈上升趋势)。无论您使用哪种技术,都很难否认编写(响应)用户界面一次并使其适用于所有设备和平台的吸引力。云托管服务通过提供几乎即时/无限扩展以及低前期基础设施投资,进一步推动了网络的发展。

所以今天,我衷心地建议转向网络用户界面,因为它可能会延长应用程序的保质期 - 这通常需要在企业环境中持续很长时间。或者,如果您是一名基于Microsoft的开发人员进行移动开发,那么Xamarin值得一看。

答案 4 :(得分:2)

WinForms可能会在企业环境中存在很长时间。它们可以很好地用于许多目的。许多项目都基于WinForms,许多公司将在项目期间坚持使用该技术,而不是混合搭配。

话虽如此,WPF是未来。它是一种更高效,功能更强大的UI技术,非常值得学习。

WinForms和WPF可以在单个应用程序中共存。这可能是他们被引入公司的最常见方式(那个和小概念证明项目)。

答案 5 :(得分:1)

当然不是。

Winforms更易于使用(考虑到你还不知道WPF),WPF与Winforms模型完全不同。

如果你想要一个简单的GUI(标准表单),请使用Winforms。如果你想要一些更华丽的东西,并有时间,去WPF。

我相信未来WPF将成为事实上的标准。但是现在,如果我想要快速和干净的东西,我会坚持使用Winforms。

值得一提的是,许多应用程序已经在使用Winforms - 这意味着维护工作经常会出现涉及WinForms的问题,所以暂时不要使用它。

答案 6 :(得分:1)

WinForms并没有死。谷歌“赢得C#工作”,你会发现很多。 WPF是热门的东西,但它仍然相对较新。它将不会成为另外两到三年恕我直言的主流。

答案 7 :(得分:1)

这是一个关于WinForms和WPF的好blog post。总的想法是明智地选择,这意味着没有一个胜过另一个。每个都有不同的功能子集。

  

然而,在WPF和WinForms之间做出决定则是另一回事。当然,WPF是新的热点,WinForms已经老了,但是它是正确的选择吗?显然“这取决于”情况,微软将继续提供和支持WinForms,因此它不会很快消失。那么在WinForms上选择WPF有哪些令人信服的因素呢? Karl在他的WPF业务应用系列中暗示了WPF在WinForms上的选择,但其原因可能对某些人来说很微妙。

我个人更喜欢WPF,因为我最初是一名Web开发人员,并且发现标记XAML更自然。

答案 8 :(得分:1)

我认为在它变得更加主流之前学习WPF绝对是值得的,提高你的技能总是好的,并且拥有新技术的经验和知识总是有利的,特别是如果WPF将来会被更广泛地使用。

此外,虽然编写xaml标记与创建表单非常不同,但是距离编写HTML并不是一百万英里,如果您已经进行了任何Web开发,那么对您来说可能不会有太大的影响。

虽然WinForms是一种较旧的技术,但并不意味着它会永远消失,但我们仍然拥有使用VB6编写的应用程序。只有一半的开发部门使用.NET - 我们分成3个团队,一个团队仍在使用.NET 1.1,另一个团队正在使用.NET 2,而我所使用的团队正在使用.NET 3.5(你可以说我们是幸运的!)

答案 9 :(得分:1)

我们开始将WPF用于新项目,坦率地说,很难回到WinForms。很多很好的东西,我不能再和你一起去了。

虽然有一个建议。即使你可以使用WPF进行更复杂的布局(比如它提到的,一个按钮,或几乎任何东西,可以托管其他东西,如图像,文本框甚至更多),WinForm中发现的其他一些“基础”东西很难重现。 示例:在WPF工具包发布之前,WPF没有datagrids和datetime选择器,因此您必须自己完成。此外,它仍然没有MaskTextBox,你必须自己做或从第三方下载它。我遇到的最后一个实际上是使用Treeview找到了注释:叶子和父母之间的界线没有显示。

话虽如此,在大多数方面仍然比WinForm好得多。

答案 10 :(得分:1)

我们开始在我们拥有的新项目中使用wpf

新应用程序在winforms中包含许多遗留代码。

每当我们想要使用winforms的旧对话时,就有可能。

当你使用WPF时,你真的不想回到winforms。你可以更轻松地完成那些让你在winforms中占用大量时间的GUI。

任何方式都需要一些时间来学习这些东西,并能够使用它的所有功能(不仅仅是UI,还有数据绑定和命令模式)。

有经验的somone可以帮助第一个架构非常有帮助。