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

Svi*_*ish 79 c# controls components winforms

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

Fre*_*örk 149

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

MyComponent
   |-> Component

MyCustomControl
   |-> Control
          |-> Component

MyUserControl
   |-> ContainerControl
          |-> ScrollableControl
                 |-> Control
                        |-> Component
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • 是的,我花了一段时间才弄明白,但似乎`UserControl`实际上是一个"复合"控件(由其他控件制作的控件),而自定义控件实际上是一个用户设计的控件. (14认同)
  • @FredrikMörk 很好的答案!你能推荐一个我们可以学习如何创建自定义控件的网站吗? (2认同)