C#中的UserControl与CustomControl比较

5
在C#的WindowsForm中,UserControl和CustomControl有什么区别?

谢谢...,你能详细地给我解释一下吗? - sree aneev
1
“Plain and simple”(简单明了) - DHN
3
用户控件(User Control)、自定义控件(Custom Control)和组件(Component)的区别在于它们所处的层次和用途。用户控件是由现有的控件组成,主要用于将多个控件组合成一个可重复使用的组件。自定义控件是从控件类继承并添加自定义代码而创建的新控件,可以在 Visual Studio 中设计和使用。组件是一种不包含任何界面元素的类,通常作为其他控件或应用程序的基础服务提供者。 - BielsasBucket
2个回答

7
有关于Windows应用和Web应用程序的自定义和用户控件。 Windows应用程序控件具有.cs扩展名。
一般情况下,用户控件更容易创建。您可以将现有的控件(如文本框、标签等)拖放到表单中。 自定义控件通常更难(耗时)创建,但提供更大的灵活性、可自定义性和集成性。
简而言之,最主要的区别在于:
用户控件由现有控件组成。因此,有时也称为复合控件。 典型示例是登录表单。表单和所有逻辑都包含在这个“可重用”的用户控件中。
自定义控件是您创建的控件。在Windows窗体中,这意味着像上面的示例一样覆盖OnPaint方法。自定义控件没有与用户控件相同的设计时支持(例如拖放现有控件等)。自定义控件通常被视为可重用组件,可以添加到Visual Studio工具箱中,因此它们通常不特定于您的业务或代码。
这是一个链接,其中列出了不同形式的控件及其一些代码示例:http://samples.gotdotnet.com/quickstart/winforms/doc/WinFormsCreatingControls.aspx

“自定义控件没有可视化界面。”这个说法准确吗?我认为“自定义”在CustomControl中的意思是您(开发人员)正在绘制控件的视觉方面(例如设置边界、客户区域、形状等)。我认为在CustomControl中,您会花费更多时间涉及OnPaint方法等。 - Kenneth K.
-1,你在谈论ASP.Net,而OP问的是关于winforms的。 - ken2k
@ken2k - 抱歉,我已更新我的答案以涵盖 Windows Forms。 - BielsasBucket
@Digger,我撤销了你的踩票,因为你进行了编辑,但也许你可以删除ASP.Net部分,因为这个具体问题与ASP.Net无关? - ken2k
@ken2k - 我已经删除了 asp.net 部分。我一边尝试做很多事情,一边误读了问题。就像我的工作和浏览 Stack Overflow 一样。希望现在没问题了。 - BielsasBucket

4

如果您想将许多控件分组,则可以使用UserControl。也就是说,创建一组控件。当您希望在项目的不同部分中使用相同的控件组时,通常会这样做。

如果您想扩展现有控件,则可以使用CustomControl。该控件编译为DLL文件,您可以从不同的项目中引用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接