向DataGridView添加多个不同的控件

时间:2016-05-24 07:25:17

标签: c# winforms datagridview custom-controls custom-object

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

我理解如何制作自定义单元格,但我所看到的每篇文章或教程每个单元格只有一种控件类型,对我来说也很困惑。

我读了这篇文章 - DataGridView Control (Windows Forms)

但是只是想不出来..

那么有没有办法制作这种物体?

2 个答案:

答案 0 :(得分:1)

您可以尝试使用所需控件进行用户控制并将其置于DGV单元格

答案 1 :(得分:1)

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

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

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

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

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

自定义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描述了如何创建自定义编辑控件以及如何从自定义单元格实例化它。