用户控制,自定义控件和组件有什么区别?

时间:2009-08-24 13:33:54

标签: c# winforms controls components

这些是你可以添加到项目中的三个不同的东西,我不太确定我是否理解其中的差异。例如,当使用Form时,它们似乎都显示在组件工具箱中。每种方法有哪些常见的使用方案?有什么区别?

5 个答案:

答案 0 :(得分:147)

User Control,Custom Control和Component之间的主要区别在于它们从继承树中的不同级别继承:

MyComponent
   |-> Component

MyCustomControl
   |-> Control
          |-> Component

MyUserControl
   |-> ContainerControl
          |-> ScrollableControl
                 |-> Control
                        |-> Component

因此,简而言之,您可以通过不同的选项获得不同数量的预接线功能。

您何时会使用不同的选项? (这些是思想和观点,而不是真理)

  • 如果您想提供无UI功能(例如计时器组件,数据源......),请创建组件
  • 创建自定义控件,如果您想要创建一个完全控制其可视外观的组件,并且您不希望任何不必要的功能。典型案例是功能有限的简单控件(如按钮)
  • 创建用户控件,如果您要将现有控件组合到可重复使用的构建块(例如两个带有按钮的列表,您可以在列表之间移动项目)。

答案 1 :(得分:4)

这是CustomControl和UserControl之间的一些区别:

自定义控件

松散耦合的控制w.r.t代码和UI

从控制派生

在ResourceDictionary中定义UI

UI是可换肤的

具有动态布局

可以在不同的项目中更改UI

拥有完整的工具箱支持

定义单个控件

更灵活

==============

用户控制

紧密耦合的控制w.r.t代码和UI

从UserControl派生

将UI定义为普通XAML

儿童控件是可换肤的

有静态布局

用户界面是固定的,在不同的项目中不能有不同的外观

无法添加到工具箱

定义一组控件

不像自定义控件那样灵活

答案 2 :(得分:2)

除了Fredrik所说的,当你计划在项目中重用它们时,通常会使用组件和自定义控件。只在一个项目中使用用户控件时使用用户控件。

答案 3 :(得分:0)

我认为最后的陈述在我看来并不正确。 我出于许多不同的原因创建了用户控件。

主要原因是,如果说我设计了多个控件的界面 组合在一起。

我首先创建一个类库,然后向其添加用户控件。 现在,如果我需要更改用户控件如何工作的逻辑的任何部分,我可以很容易。此类库也可以多次使用。

同样在同一个经典库中,我可以拥有多个可以共享的类,并用于我的任何用户控件。

这是我使用用户控件的主要原因。 如果您对用户控件或类库进行了更改。 一旦你建立了这份工作。 dll将在bin文件夹中动态更新日期。

所以如果我在另一个项目中引用它 这些变化也将出现在新项目中。

此外,它不会使用与表单相同的绘制例程以及表单上加载的任何内容。

因此,用户控件使我们能够非常模块化 我可以有多个用户控件,共享类库的基础类... 因此,用户控制目的不适用于一个项目。它在这方面没有限制。 杰夫

答案 4 :(得分:-4)

他们之间的主要区别 - User Control是一个扩展名为.ascx的页面文件,只能是 在单个应用程序或项目中使用但自定义控件是可在多个应用程序中使用的程序集(dll文件)。