【问题标题】:C# GUI programming for beginners: Where to start? [closed]面向初学者的 C# GUI 编程:从哪里开始? [关闭]
【发布时间】:2011-01-02 06:03:36
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# wpf winforms user-interface


    【解决方案1】:

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

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

    祝你好运!

    【讨论】:

    • 给我-1的人能否就他们不同意的地方发表评论,以便我们都可以从中吸取教训?
    • @bambuska - “WinForms 是更传统的构建方式,因此更容易学习” 通常不是这样。仅当您来自事件驱动的 GUI 背景时。
    • 感谢您的评论。你是对的,但与 WPF 相比,我仍然认为这是有效的。许多其他 GUI 选项是事件驱动的,因此可以与 WinForms(Java Swing、Delphi、Qt、..)相媲美,而 WPF 与大多数其他选项不同。
    【解决方案2】:

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

    如果您希望在 .NET 中实现最快的 GUI 开发时间,Windows 窗体就是它。

    【讨论】:

    • 我不同意。 WPF 速度更快,尤其是来自 Web 背景的情况下。 WPF 的设计故事要好得多,并且至少具有与 WinForms 一样好的代码访问权限。
    • 我不同意 codekaizen。如果我们谈论的是速度,WinForms 对于没有见过面的人来说要快得多。此外,视觉设计师实际上可以工作,并且不需要单独的程序(即 Blend)来使用。
    • 请记住,尽管 OP 已经是一位经验丰富的 Java 开发人员 - 对他来说,仅仅学习一个 Java GUI 框架会比一个完全的新平台和一组更容易吗?工具?
    • @Dmitri - 你有新人学习 WPF 与 Winforms 的经验吗?我愿意。 WPF 对他们来说很容易。这对您来说很难,因为您有使用 WinForms 传统方法的经验。此外,您不需要单独的程序。是什么让你有这样的想法? VS Express 运行良好。
    • 我的观点是根据有人从 Java 转向 .NET 进行 GUI 开发的。 WPF 是一个非常强大(而且相当简单)的平台,但是对于以前从未使用过类似工具的人来说,学习曲线可能会更加陡峭。体面的 Java GUI 工具都与 Windows 窗体设计器非常相似,但我知道没有一个像 WPF。
    【解决方案3】:

    是的。 C# 是 .NET 开发的首选语言。由于您使用 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 还表示,由于 WPF 对硬件的依赖性很强(Novell 希望 Mono 能够在许多处理器平台上移植),他们将永远不会在不久的将来实施 WPF。不要使用 WPF。软件不再只是一种一次性产品,当涉及到操作系统时,我们正处于旋转时代。你今天运行的平台不一定是你明天要运行的平台。 WPF 是由 Microsoft 和 Intel 开发的专有且受专利保护的技术。如果您使用它,您会发现自己处于一个非常好的 Win32-on-x86 供应商锁定状态。这意味着您肯定会发现自己迟早会完全重写您的应用程序。只需从一开始就编写可移植软件,即使您现在不需要这种可移植性。我从经验告诉你,明天你将需要便携性。绝对!

    【讨论】:

    • SWF 和 MWF 不是谈论 Windows 上的 Windows 窗体开发的有效术语。 System.Windows.Forms = WinForms = 托管窗口窗体。您是在谈论使用 Mono 的 Linux 上的 WinForms 吗?如果是这样,您应该在回答中澄清,以免 OP 感到困惑。
    【解决方案4】:

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

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

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

    【讨论】:

    • 从技术上讲,WPF 只需要 .Net 3.0。
    • 2008 express edition 不应该提供对 2.0、3.0 和 3.5 的访问权限吗?
    • 是的 Chris,但他可能需要为没有最新版本 .net 的客户开发程序
    【解决方案5】:

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

    书籍

    • Design of Everyday Things 一本关于界面设计的好书。它不是特定于软件的,但 GUI 设计人员必须阅读。
    • Coding Horror。他在他的book list 上推荐了很多开发书籍,但这些都是专门与接口相关的:

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

    网页链接

    【讨论】:

      【解决方案6】:

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

      WPF 有更好的设计故事,而且数据绑定比 WinForms 好得多。您可以至少与 WinForms 一样快地在 WPF 上启动和运行,然后走得更远,而不会遇到 WinForms 的限制。再加上 VS 2010 中的设计时数据绑定,我想说任何刚开始 GUI 开发的人都应该完全绕过 Winforms。

      【讨论】:

      • 我也强烈建议直接从 WPF 开始。我维护一个复杂的 winforms 应用程序,我希望我们在启动时拥有 WPF。
      【解决方案7】:

      C# WinForms 在让实用的 GUI 快速运行方面是最快的。虽然如果你想制作一个复杂的 GUI,包括动画、3D 等,WPF 会更好。

      您可以使用CodePlex 找到一些好的工作项目,以学习有关 WinForms 和 WPF 的最佳实践。

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

      【讨论】:

        【解决方案8】:

        C# 是肯定的。将 Winforms 用于业务线应用程序/经典 GUI。

        读取 petzold '用 c# 编程窗口'

        或者只是潜入视觉工作室。用 VS 创建 GUI 真的很简单——你会喜欢的

        您会发现从 java 到 c# 的语言转换非常简单(不是 gui 位)

        【讨论】:

          【解决方案9】:

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

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

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

          我们使用InnoSetup 构建了一个原生 Windows 安装程序,发现也相当不错。

          底线:除非您想学习一门新的语言和平台,或者您对 .NET 等不同平台提供的功能有特殊需求,否则请坚持使用 Java 进行 Windows 开发。您需要学习 Java GUI 框架,但如果您切换到 .NET,则必须学习 WPF 或 WinForms。

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

          【讨论】:

          • 这没有回答问题,看起来太像贵公司的广告了。
          • 底线:你没有理解他的问题并想把你的应用卖给他?
          • “我想我已经得出结论,C# 是最好和最快的方法(如果我错了,请纠正我)” 好吧,我个人认为他错了;如果他已经是一位经验丰富的 Java 开发人员并且不需要特定的 .NET 功能,那么仅仅为了编写 Windows 应用程序而学习新的开发环境是没有意义的。我相信他学习如何用 Java 编写 GUI 应用程序比他学习如何用 C# 编写 GUI 应用程序要快。 根据我自己的商业经验,最终的 Windows 应用程序可能足够接近原生外观和感觉就足够了。
          • 是的,我是。 OP 是一位经验丰富的 Java 开发人员。如果您只想制作一个 GUI 应用程序,为什么还要学习全新的平台和工具集?我的意思是,如果您将其作为学习练习,请继续进行,但从任何其他角度来看都没有任何意义。
          • 对于那些投票否决我的答案的人来说一个问题 - 是因为我建议 OP 选择 C# 而不是 Java 是错误的,还是因为我链接到了我自己的商业 Java 应用程序?
          猜你喜欢
          • 1970-01-01
          • 2010-09-10
          • 2023-03-24
          • 1970-01-01
          • 2016-03-11
          • 2016-05-08
          • 2011-07-12
          • 2011-02-11
          • 2011-03-23
          相关资源
          最近更新 更多