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

这些是你可以添加到项目中的三种不同的东西,如果我了解其中的差异,我不太清楚。 当他们使用Form时,他们似乎都出现在组件工具箱中。 他们每个人有哪些常见的使用场景? 有什么不同?

用户控件,自定义控件和组件之间的主要区别在于它们inheritance树中的不同级别:

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

所以,简而言之,您可以通过不同的选项获得不同数量的预接线function。

你什么时候使用不同的选项? (这些是思想和观点,而不是真理)

  • 如果您想要提供没有UI的function (如定时器组件,数据源等),请创build一个组件
  • 如果您想要创build一个自定义控件 ,您可以完全控制其外观 ,并且不需要任何不必要的function。 典型的例子是function有限的简单控件(如button)
  • 如果要将现有的控件组合到可重用的构build块(如两个列表中,您可以在列表之间移动项目),请创build一个用户控件

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

自定义控件

一个松散耦合的控制码和UI

从控制派生

在ResourceDictionary中定义UI

UI是可裁剪的

具有dynamic布局

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

有完整的工具箱支持

定义一个控件

更灵活

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

用户控制

紧密耦合的控制码和UI

派生自UserControl

将UI定义为正常的XAML

子控件是可皮的

有静态布局

UI是固定的,不能在不同的项目中有不同的外观

无法添加到工具箱

定义一组控件

不像自定义控件那样非常灵活

根据Fredrik的说法,当你计划在项目中重复使用组件时,通常会使用组件和自定义控件。 如果只在一个项目中使用用户控件,请使用用户控件。

我认为最后的陈述在我看来是不正确的。 我为许多不同的原因创build用户控件。

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

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

同样在优雅的图书馆,我可以有多个类,可以共享和用于我的任何用户控件。

这是我使用用户控件的主要原因。 如果你改变你的用户控件或类库。 一旦你build立工作。 该DLL将在bin文件夹中dynamic更新date。

所以,如果我在另一个项目中引用这些更改也将出现在新项目。

此外它不使用相同的油漆例程作为窗体和任何你已经加载在窗体上。

所以用户控件使我们能够非常模块化我可以有多个用户控件共享类库的基本类…所以用户控制的目的不只是一个项目。 在这方面没有任何限制。 杰夫

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