用户控件 - 面板和用户控件 C# 之间的差异

本文关键字:用户 控件 之间 | 更新日期: 2023-09-27 17:56:32

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

用户控件 - 面板和用户控件 C# 之间的差异

窗体是控件和其他控件的容器。窗体是窗口应用程序的基本单位。

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

用户控件

是用户定义的控件。

看:

  • 窗口窗体
  • 窗口窗体控件
  • 窗口窗体概述

在 Windows 窗体中,窗体是视觉对象 显示的表面 向用户提供的信息。你 通常构建 Windows 窗体 通过将控件添加到应用程序 表单和开发对用户的响应 操作,例如鼠标单击或按键 印刷机。控件是离散用户 显示的界面 (UI) 元素 数据或接受数据输入。

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

根据 MSDN,Panel 类是"用于对控件集合进行分组",而用户控件"提供可用于创建其他控件的空控件"。

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

区别之一是面板是可滚动控件

,而用户控件是容器控件(也是可滚动控件)。因此,如果需要 ContainerControl 功能,请考虑使用 UserControl。

您可能不知道 ContainerControl 的作用,因此您无法使用 Panel 做什么,因此以下内容可能更有用:

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

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

通过使其成为单独的类,可以在类似情况下重用代码。只要你只用一次,那么通常我们不会费心把它变成一个特殊的类。我们通常不会为"我的表单中的选择按钮"创建一个特殊的类,它确实......单击时",但是如果您将以十种不同的形式使用此按钮,那么创建一个 SelectButton 类可能更明智。

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

面板或多或少类似于没有周围矩形的 GroupBox:如果仅在此窗体中使用它,请考虑使用它而不是用户控件。类似于您将我们的"按钮...点击时":因为你只在这里使用它,所以你不会从中派生。

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

每当我需要多个控件的组合时,尤其是当它们相互交互时。例如,如果您有一个文本框和一个描述文本框中内容的标签,以及一个处理文本框中文本的"确定"按钮。在这种情况下,我通常将其设为用户控件。

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

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

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