向 DataGridView 添加多个不同的控件

Adding multiple, different controls to DataGridView

我想创建一个对象来表示 DataGridView 中的一个单元格,包含一个标签、组合框和一个文本框,并用不同的值填充我 table 中的单元格。

我知道如何制作自定义单元格,但我看到的每篇文章或教程都是关于每个单元格只有一种控件类型,这也让我很困惑。

我读了这个 - DataGridView Control (Windows Forms)

就是想不通..

那么有什么方法可以制作这种东西呢?

您可以尝试使用所需控件制作用户控件并将其放置在 DGV 单元格中

如果我理解正确的话,您希望您的单元格显示名称和 Phone。由于每个单元格都可以有一个值,因此您必须将名称和 Phone 包装到一个对象(例如联系人)中,并且绑定的数据源 属性 应该是该类型。

您实际上不需要所有三个控件都显示在一个单元格中。当不处于编辑模式时,您需要两个标签(一个用于名称,一个用于 Phone)。在编辑模式下,您需要一个组合框和一个标签(如果您希望 phone 可编辑,则需要文本框 - 但这可能很棘手)。

然后您要创建自定义 DataGridViewCell、自定义 DataGridViewColumn 和自定义编辑控件。

虽然您可以添加两个标签作为自定义 DataGridViewCell 的子级,但最好直接覆盖 Paint 并直接在单元格表面绘制名称和 Phone。

自定义编辑控件可以是任何实现了IDataGridViewEditingControl接口的控件。因此它可以是一个包含组合框和标签(或文本框)的复合控件。复合控件应将联系人对象作为一个单元进行编辑。

自定义的DataGridViewColumn 还负责为编辑控件的下拉部分提供数据源。

https://msdn.microsoft.com/en-us/library/7fb61s43(v=vs.110).aspx 介绍了如何创建自定义单元格和列。

https://msdn.microsoft.com/en-us/library/7tas5c80(v=vs.110).aspx 描述了如何创建自定义编辑控件以及如何从自定义单元格实例化它。