C# Panel和UserControl c之间的差异

C# Panel和UserControl c之间的差异,c#,user-controls,panel,C#,User Controls,Panel,有人能告诉我使用表单、面板或用户控件之间的区别吗。表单是控件,是其他控件的容器。窗体是windows应用程序的基本单元 面板是控件,也是其他控件的容器 usercontrol是用户定义的控件 见: 在Windows窗体中,窗体是可视的 在其上显示的曲面 将信息发送给用户。你 通常构建Windows窗体 通过将控件添加到 表单和开发对用户的响应 操作,如鼠标单击或按键 印刷机。控件是离散用户 显示的界面UI元素 或接受数据输入 当用户对您的 窗体或其控件之一 操作生成一个事件。你的 应用程序通过以

有人能告诉我使用表单、面板或用户控件之间的区别吗。

表单是控件,是其他控件的容器。窗体是windows应用程序的基本单元

面板是控件,也是其他控件的容器

usercontrol是用户定义的控件

见:

在Windows窗体中,窗体是可视的 在其上显示的曲面 将信息发送给用户。你 通常构建Windows窗体 通过将控件添加到 表单和开发对用户的响应 操作,如鼠标单击或按键 印刷机。控件是离散用户 显示的界面UI元素 或接受数据输入

当用户对您的 窗体或其控件之一 操作生成一个事件。你的 应用程序通过以下方式对这些事件作出反应: 使用代码,并处理事件 当它们发生时。欲了解更多信息, 请参见在Windows中创建事件处理程序 表格

根据用于对控件集合进行分组,而提供可用于创建其他控件的空控件

你是对的:这对你决定是使用面板还是用户控件没有多大帮助

其中一个区别是面板是ScrollableControl,而UserControl是ContainerControl,它也是ScrollableControl。因此,如果您想要容器控件功能,请考虑使用USER控件。 您可能不知道ContainerControl是做什么的,所以您不能使用面板来做什么,因此以下内容可能更有用:

<>在面向对象编程中,在WiFrm中也是如此,每当你想要一个类似另一个类,但只是稍微不同的类时,你会考虑从另一个类派生。

这样,如果你想要一个按钮在按下时改变颜色,并且在再次按下时返回原来的颜色,就像一个开关按钮,你可以考虑从类按钮中派生出来,或者可以从类CHECKBOX-A型按钮中派生出来。 通过使其成为一个单独的类,您可以在类似的情况下重用代码。当你只使用一次的时候,我们通常不会把它变成一个特殊的类。我们通常不会在我的表单中为选择按钮创建一个特殊的类,它会。。。单击时,如果您将以十种不同的形式使用此按钮,那么创建SelectButton类可能更明智

类似的,如果你有一组控件,有一些行为,并且计划使用不同的形式,考虑创建一个用户控件,在这里放置这个行为。好的是,这种行为的代码隐藏在控件的一侧。UserControl的用户只需要知道它的功能,而不需要知道它是如何完成的。您甚至可能想隐藏这是如何完成的,因此用户=代码,而不是操作员无法访问它

一个面板或多或少就像一个没有周围矩形的Goopbox:如果只在这个表单中使用它,可以考虑使用它代替用户控件。类似于你给我们一个按钮,可以。。。单击时:因为您仅在此处使用它,所以不会从中派生

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

每当我需要几个控件的组合时,特别是当它们相互交互时,比如一个文本框和一个描述文本框中内容的标签,以及一个处理文本框中文本的OK按钮,我通常将其设置为UserControl

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

想想看:使用从面板派生的类与使用UserControl类似于派生与聚合/组合:如果进行聚合,则可以限制对功能的访问;如果进行派生,则用户可以访问所有父功能

<>如果你只想要有限的功能:显示/不显示,可能大小和位置,背景,但不要太多:考虑创建一个USER控件。如果你想改变行为,考虑使用一个面板,特别是如果你只用一种形式使用它。< / P>是的,谷歌可以: