面向初学者的C#GUI编程:从哪里开始?

时间:2010-01-06 21:35:28

标签: c# wpf winforms user-interface

我是一名C ++ / Java开发人员,不了解.Net或GUI。我需要为2000 / XP / Vista / 7开发一个Windows应用程序。

我想我已经得出结论,C#是最好的和最快的方式(如果我错了,请纠正我)。您有什么推荐的吗?我应该学习哪种GUI方法? (表格?还有其他东西吗?)

这是在.Net 2.0模式下编译的最佳方式吗?它将成为公众下载的应用程序。

9 个答案:

答案 0 :(得分:17)

对于桌面应用程序,基本上有两种选择; WinFormsWindows Presentation Foundation(WPF)。

WinForms更传统的构建,因此更容易学习。因此,WinForms可能是一个更简单的开始,但如果您计划实际使用您在.NET开发GUI中获得的知识,我会说您最好从一开始就深入研究WPF。这是一个更丰富的框架,也是微软为桌面应用程序付出努力的地方。它也类似于Silverlight,这意味着当您了解WPF时,您也可以轻松进入Silverlight。

祝你好运!

答案 1 :(得分:10)

在我的个人开发经验中,Windows Forms与在Windows上快速部署GUI应用程序时一样容易。 WPF当然是另一种选择,但使用它可能需要您花一些时间熟悉XAML。 Windows Forms的外观和感觉就像Java的许多可用GUI选项一样,在我看来,它比大多数更好。

如果您希望在.NET中尽可能快地进行GUI开发,那么Windows Forms就是它。

答案 2 :(得分:8)

是。在.NET开发方面,C#是首选语言。既然你已经用Java编程了,你会发现这个语言看起来非常熟悉(虽然看起来有点干净,并且有一些非常好的功能,比如委托,你甚至可以使用指针,如果你真的想要,尽管你不会需要在大多数情况下)。

它是SWF(系统Windows窗体)或MWF(托管Windows窗体 - 使用System.Drawing在托管代码中编写的SWF的轻量级版本 - 它将您从基础经典SWF的WinAPI中解放出来)。

还有GTK-Sharp,一种用于C-Sharp的GTK +绑定,但是由于您正在为Windows开发,用户会发现为您的应用程序安装第三方GUI框架很奇怪。

我不建议使用WPF。它直接调用底层图形硬件,这意味着它非常快,但根本不可移植。它只能在具有DirectX兼容硬件渲染单元(图形卡)的x86系统(不是SPARC等)上运行,并且不能在具有强大硬件抽象的系统上运行(如大多数Unices,如BSD或Linux或Solaris)。

Novell还表示,由于它强大的硬件依赖性(Novell希望Mono可以跨多个处理器平台移植),他们将在不久的将来永远不会实施WPF。不要使用WPF。软件不再仅仅是一种抛弃产品,而在涉及操作系统时,我们正处于旋转时代。您今天运行的平台不一定是您明天要运行的平台。 WPF是由Microsoft和Intel开发的专利和专利保护技术。如果您使用它,您将发现自己处于一个非常好的Win32-on-x86供应商锁定中。这意味着您肯定会发现自己迟早会完全重写您的应用程序。即使您今天不需要可移植性,也只需从头开始编写便携式软件。我从经验告诉你,明天你需要携带。绝对!

答案 3 :(得分:3)

您可以使用Windows窗体或Windows Presentation Foundation来开发GUI;虽然,Windows Forms可能会让您更熟悉。如果您在Google上搜索 Windows Forms教程,您将获得许多入门选项。

如果您需要使用.NET 2.0,则仅限于Win Forms。 WPF需要.NET 3.5。

我建议下载微软的免费Visual Studio Express Edition以用于开发。它包括一个出色的拖放式GUI设计工具。

答案 4 :(得分:3)

我不同意WinForms的所有支持者。这并不容易。对于具有GUI编程传统经验的人来说可能更容易,但这张海报没有那个

WPF有一个更好的设计故事,数据绑定比WinForms好多了。您可以在WinF上启动和运行至少与WinForms一样快,然后在不遇到WinForms的限制的情况下更进一步。将此与VS 2010中的设计时数据绑定相结合,我想说任何开始进行GUI开发的人都应该完全绕过Winforms。

答案 5 :(得分:2)

我建议先学习Winforms,然后再移动WPF。 Winforms更容易学习并且可以快速完成工作。然而,未来是WPF,所以我不会把它留在黑暗中。我发布了一些关于GUI开发工作的好书和链接。

图书

Don't Make Me Think
About Face 3.0
The Inmates Are Running the Asylum
GUI Bloopers

网络链接

答案 6 :(得分:1)

C#WinForms在实现快速实用的GUI方面将是最快的。虽然如果您考虑制作复杂的GUI,动画,3D等,WPF会更好。

您可以使用CodePlex找到一些好的工作项目,以便在WinForms和WPF的最佳实践方面进行学习。

您还可以查看here以获取WPF和WinForms上的一些好书。

答案 7 :(得分:1)

肯定是C#。将Winforms用于业务线app /经典GUI。

用c#'

阅读petzold的编程窗口

或者只是潜入视觉工作室。使用VS创建GUI非常简单 - 您会喜欢它

你会发现从java到c#的langauge过渡非常简单(不是gui bit tho)

答案 8 :(得分:-3)

  

我想我已经得出结论,C#是最好的和最快的方式(如果我错了,请纠正我)。你推荐什么?

就个人而言,我会坚持使用Java。我们(意为OffByZero,我共同创立的公司)发布了一个名为OBZVault的加密文本编辑器,它是用Java编写的。

我们最初在Linux中编写它,然后移植到Mac OS X和Windows。我们发现Windows端口提供了一个完全可以接受的外观和感觉 - 几乎(但不完全)像本机Windows应用程序。

我们使用InnoSetup构建了一个原生的Windows安装程序,并发现它非常好。

结论:除非你想学习一门新语言&平台,或者您对.NET等不同平台提供的功能有特定需求,也适用于Windows开发的Java。您需要学习Java GUI框架,但如果您切换到.NET,则必须学习WPF或WinForms。

对于经验丰富的.NET开发人员来说,在WinForms或WPF中构建Windows应用程序可能会更快,但如果您已经精通Java,我会坚持使用这些工具(语言,库) ,IDE),你知道。