在 Windows 表单中显示控件集合

Displaying a collection of controls in Windows Forms

我想显示如下内容:-

每一行都是关于一个进程的(如 PID、Parent 等信息)。用户可以检查 checkbox 并单击“启动”按钮以获取有关该过程的一些动态详细信息。

问题是 CheckedListBox 控件不允许超过一列,而 ListView 等其他控件(允许多列)不允许 checkbox 等控件嵌入列中。

我想知道是否有一个控件可以让我拥有自定义控件列表,其中每个自定义控件包含 checkboxSome TextSome Dynamic Text

如何在 Windows 表单中实现?提前致谢。

您可以使用以下任一选项:

  • DataGridView (Example)
    您可以使用 DataGridView 显示多个不同类型的列,包括 TextBoxLabelCheckBoxComboBoxImageButtonLink。您还可以通过自定义绘画或添加新的自定义列类型来自定义网格的外观。

  • 用户控件
    您可以创建一个 composite control or UserControl containing any other controls which you need and use it as a row template, then you can show all rows by hosting multiple instance of that user control in a Panel or FlowLayoutPanel.

  • TableLayoutPanel (Example)
    您可以使用包含多个列和行的 TableLayoutPanelTableLayoutPanel 的每个单元格都可以承载一个控件。

  • DataRepeater
    您可以使用 DataRepeater 控件创建行模板并显示使用该模板的行列表。

示例 1 - DatGridView

如果您想使用数据绑定并显示特定控件,包括 TextBoxLabelCheckBoxComboBoxImageButtonLink 一行,DataGridView 很棒。它是 customize-able,您可以添加一些其他不同的列类型或自定义网格的绘制,或从范围广泛的有用事件中受益以进行验证等等。

在下图中,您可以看到带有 RowHeaderVisibleColumnHeaderVisibleDataGridView 设置为 false,就像没有 header 的字段列表一样:

示例 2 - 用户控件

如果您需要自定义控件来承载更复杂的控件或对组件进行更多控制或以不同于列的布局显示它们,您可以创建一个 UserControl 来承载您的组件,然后:

  • 如果您只想要 top-down 流程,请使用 Panel 并将您的用户控件添加到其中,并将 Dock 属性 控件设置为 Top .
  • 如果您可能想要 top-down 以外的流程,请使用 FlowLayoutPanel 向其添加您的控件实例。

创建一个UserControl

将它的实例添加到您的 PanelFlowLayoutPanel

您可以使用 TableLayoutPanel 容器。

I want to know if there is a control which will allow me to have a list of custom controls where each custom control contains a checkbox, Some Text and Some Dynamic Text.

一种选择是您将以下内容创建为单独的用户控件,

...作为容器控件,使用像 FlowLayoutPanel 这样的容器,并继续将用户控件添加到 FlowLayoutPanel

确保 FlowLayoutPanel 的方向设置为 TopDown

this.FlowLayoutPanel1.FlowDirection = FlowDirection.TopDown;