【问题标题】:UserControl vs CustomControl in C# [duplicate]C#中的UserControl与CustomControl [重复]
【发布时间】:2013-02-24 01:19:35
【问题描述】:

C#中使用WindowsForm的UserControl和CustomControl有什么区别?

【问题讨论】:

标签: c# winforms user-controls custom-controls


【解决方案1】:

Windows 应用程序和 Web 应用程序都有自定义和用户控件。 Windows 应用程序控件具有 .cs 扩展名。

一般来说,用户控件更容易创建。您可以将现有的控件(如文本框、标签等)拖到表单上。自定义控件通常更难以创建(耗时),但提供了更大的灵活性、可定制性和集成性。

简而言之,主要区别在于:

用户控件由现有控件组成。由于这个事实,它有时也被称为复合控件。一个典型的例子是登录表单。表单和所有逻辑都包含在这个“可重用”用户控件中。

自定义控件是您创建的控件。在 Windows 窗体中,这意味着重写 OnPaint 方法,如上面的示例所示。自定义控件没有与用户控件相同级别的设计时支持(即拖放现有控件等)。自定义控件通常被认为是可重用的组件,可以添加到 Visual Studio 的工具箱中,因此它们通常不特定于您的业务或代码。

这里有一个链接,通过一些代码示例进入不同的形式:http://samples.gotdotnet.com/quickstart/winforms/doc/WinFormsCreatingControls.aspx

【讨论】:

  • “自定义控件不是可视界面。”这个说法准确吗?我认为 CustomControl 中的“自定义”意味着您(开发人员)正在绘制控件的视觉方面(例如设置边界、客户区、形状等)。我认为在 CustomControl 中你会花费更多时间来处理 OnPaint 方法等。
  • -1,你说的是 ASP.Net,OP 询问的是 winforms。
  • @ken2k - 抱歉,我已经更新了我的答案以涵盖 Windows 窗体。
  • @Digger 我在您编辑时删除了反对票,但也许您可以删除 ASP.Net 部分,因为这个特定问题与 ASP.Net 无关?
  • @ken2k - 我现在已经删除了 asp.net 位。我误读了这个问题,因为我试图一次做很多事情。就像我的工作和冲浪堆栈溢出一样。希望现在没事。
【解决方案2】:

如果您想将多个控件分组到一个组中,您可能需要使用 UserControl。也就是说,创建一组控件。当您想在项目的不同部分使用相同的控制组时,通常会这样做。

当您想要扩展现有控件时,您可能想要使用 CustomControl。该控件被编译成一个 DLL 文件,您可以从不同的项目中引用该文件。

【讨论】:

    猜你喜欢
    • 2014-01-03
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    相关资源
    最近更新 更多