Panel和UserControl之间的区别c#

时间:2011-05-13 05:28:59

标签: c# user-controls panel

有人可以告诉我使用表格,面板或用户控件之间的区别。

2 个答案:

答案 0 :(得分:3)

表单是控件和其他控件的容器。表单是Windows应用程序的基本单元。

面板是控件和其他控件的容器。

usercontrol是用户定义的控件。

请参阅:

  

在Windows窗体中,表单是可视的   您显示的表面   给用户的信息。您   通常构建Windows窗体   应用程序添加控件   形成和开发对用户的响应   操作,例如鼠标点击或键   印刷机。控件是离散用户   显示的界面(UI)元素   数据或接受数据输入。

     

当用户对您做某事时   形式或其控制之一,   动作生成一个事件。您的   应用程序通过这些事件做出反应   使用代码,并处理事件   当它们发生时欲获得更多信息,   请参阅在Windows中创建事件处理程序   形式。

答案 1 :(得分:0)

根据 MSDN the Panel class 是“用于对控件集合进行分组”,而 User Control 是“提供可用于创建其他控件的空控件”。

您说得对:这对您决定是使用面板还是用户控件没有多大帮助。

区别之一是 Panel 是 ScrollableControl,而 UserControl 是 ContainerControl(也是 ScrollableControl)。因此,如果您想要 ContainerControl 功能,请考虑使用 UserControl。

您可能不知道 ContainerControl 做什么,所以您不能用 Panel 做什么,因此以下内容可能更有用:

在面向对象编程中,在 Winforms 中也是如此,每当您想要一个类的行为与另一个类相似,但只是略有不同时,您可以考虑从另一个类派生。

因此,如果您想要一个按钮在按下时改变颜色,并在再次按下时恢复其原始颜色(如开关按钮),您可以考虑从类 Button 派生,或者从类 CheckBox-in -按钮的形状。

通过使其成为一个单独的类,您可以在类似情况下重用代码。每当您只使用它一次时,通常我们就不会费心把它变成一个特殊的类。我们通常不会为“我的表单中的 Select 按钮,当点击它时……”创建一个特殊的类,但是如果您将在十种不同的表单中使用这个按钮,那么创建一个 SelectButton 类可能更明智。< /p>

类似的,如果您有一组具有某些行为的控件,并且您打算以不同的形式使用它,请考虑创建一个用户控件,并在其中放置此行为。好消息是这种行为的代码隐藏在控件旁边。您的 UserControl 的用户只需要知道它的作用,而不是它是如何完成的。您甚至可能想要隐藏这是如何完成的,因此用户(= 代码,而不是操作员)无法访问它

面板或多或少像一个没有周围矩形的 GroupBox:如果您只在此表单中使用它,请考虑使用它而不是用户控件。类似于您如何使用“按钮在点击时...

我很少使用面板。派生类:TabPage、SplitterPanel、...更有可能仅以这种形式使用。

每当我需要多个控件的组合时,尤其是当它们相互交互时,例如一个文本框和一个描述文本框中内容的标签以及一个处理文本框中文本的 OK 按钮,我通常会制作它一个用户控件。

我可以从面板派生并添加标签、文本框和按钮,但随后用户可能会通过添加其他项目或调用会干扰我的功能的面板函数来干扰我的面板。

想想看:使用派生自 Panel 的类 vs 使用 UserControl 类似于派生 vs 聚合/组合:如果聚合,则可以限制对功能的访问,如果派生,则用户可以访问所有父功能.

因此,如果您只想要有限的功能:显示/不显示,可能是大小和位置、背景,但仅此而已:考虑创建一个 UserControl。如果您希望有可能改变行为,请考虑使用面板,尤其是当您仅以一种形式使用它时。