在 Windows 表单中显示控件集合
Displaying a collection of controls in Windows Forms
我想显示如下内容:-
每一行都是关于一个进程的(如 PID、Parent 等信息)。用户可以检查 checkbox
并单击“启动”按钮以获取有关该过程的一些动态详细信息。
问题是 CheckedListBox
控件不允许超过一列,而 ListView
等其他控件(允许多列)不允许 checkbox
等控件嵌入列中。
我想知道是否有一个控件可以让我拥有自定义控件列表,其中每个自定义控件包含 checkbox
、Some Text
和 Some Dynamic Text
。
如何在 Windows 表单中实现?提前致谢。
您可以使用以下任一选项:
DataGridView (Example)
您可以使用 DataGridView
显示多个不同类型的列,包括 TextBox
、Label
、CheckBox
、ComboBox
、Image
、Button
、Link
。您还可以通过自定义绘画或添加新的自定义列类型来自定义网格的外观。
用户控件
您可以创建一个 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)
您可以使用包含多个列和行的 TableLayoutPanel
。 TableLayoutPanel
的每个单元格都可以承载一个控件。
DataRepeater
您可以使用 DataRepeater
控件创建行模板并显示使用该模板的行列表。
示例 1 - DatGridView
如果您想使用数据绑定并显示特定控件,包括 TextBox
、Label
、CheckBox
、ComboBox
、Image
、Button
,Link
一行,DataGridView
很棒。它是 customize-able,您可以添加一些其他不同的列类型或自定义网格的绘制,或从范围广泛的有用事件中受益以进行验证等等。
在下图中,您可以看到带有 RowHeaderVisible
和 ColumnHeaderVisible
的 DataGridView
设置为 false
,就像没有 header 的字段列表一样:
示例 2 - 用户控件
如果您需要自定义控件来承载更复杂的控件或对组件进行更多控制或以不同于列的布局显示它们,您可以创建一个 UserControl
来承载您的组件,然后:
- 如果您只想要 top-down 流程,请使用
Panel
并将您的用户控件添加到其中,并将 Dock
属性 控件设置为 Top
.
- 如果您可能想要 top-down 以外的流程,请使用
FlowLayoutPanel
向其添加您的控件实例。
创建一个UserControl
将它的实例添加到您的 Panel
或 FlowLayoutPanel
您可以使用 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;
我想显示如下内容:-
每一行都是关于一个进程的(如 PID、Parent 等信息)。用户可以检查 checkbox
并单击“启动”按钮以获取有关该过程的一些动态详细信息。
问题是 CheckedListBox
控件不允许超过一列,而 ListView
等其他控件(允许多列)不允许 checkbox
等控件嵌入列中。
我想知道是否有一个控件可以让我拥有自定义控件列表,其中每个自定义控件包含 checkbox
、Some Text
和 Some Dynamic Text
。
如何在 Windows 表单中实现?提前致谢。
您可以使用以下任一选项:
DataGridView (Example)
您可以使用DataGridView
显示多个不同类型的列,包括TextBox
、Label
、CheckBox
、ComboBox
、Image
、Button
、Link
。您还可以通过自定义绘画或添加新的自定义列类型来自定义网格的外观。用户控件
您可以创建一个 composite control orUserControl
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 aPanel
orFlowLayoutPanel
.TableLayoutPanel (Example)
您可以使用包含多个列和行的TableLayoutPanel
。TableLayoutPanel
的每个单元格都可以承载一个控件。DataRepeater
您可以使用DataRepeater
控件创建行模板并显示使用该模板的行列表。
示例 1 - DatGridView
如果您想使用数据绑定并显示特定控件,包括 TextBox
、Label
、CheckBox
、ComboBox
、Image
、Button
,Link
一行,DataGridView
很棒。它是 customize-able,您可以添加一些其他不同的列类型或自定义网格的绘制,或从范围广泛的有用事件中受益以进行验证等等。
在下图中,您可以看到带有 RowHeaderVisible
和 ColumnHeaderVisible
的 DataGridView
设置为 false
,就像没有 header 的字段列表一样:
示例 2 - 用户控件
如果您需要自定义控件来承载更复杂的控件或对组件进行更多控制或以不同于列的布局显示它们,您可以创建一个 UserControl
来承载您的组件,然后:
- 如果您只想要 top-down 流程,请使用
Panel
并将您的用户控件添加到其中,并将Dock
属性 控件设置为Top
. - 如果您可能想要 top-down 以外的流程,请使用
FlowLayoutPanel
向其添加您的控件实例。
创建一个UserControl
将它的实例添加到您的 Panel
或 FlowLayoutPanel
您可以使用 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;