1

我按照http://msdn.microsoft.com/en-us/library/7tas5c80.aspx中的步骤在 datagridview 上托管了我的自定义组合框 (ComboBoxEx) 。

  1. 我创建了从 DataGridViewColumn 派生的 DataGridVIewComboExColumn。
  2. 名为“DataGridVIewComboExCell”的自定义单元格是从 DataGridViewCell 创建的。
  3. 最后创建了我的自定义编辑控件“ComboExEditCtrl”(从 ComboBoxEx 派生并实现 IDataGridViewEditingControl)。

在 ComboExEditCtrl 中,OnSelectedValueChanged 方法被覆盖,如下所示。

protected override void OnSelectedValueChanged(EventArgs eventargs)
{
valueChanged = true;
this.EditingControlDataGridView.NotifyCurrentCellDirty(true);
base.OnSelectedValueChanged(eventargs);
}

每当加载网格时,自定义控件 (ComboExEditCtrl) 就会显示在单元格上。问题是当我更改自定义控件 (ComboExEditCtrl) 上的值并单击下一个单元格时,自定义控件会消失。此外,当我在 datagridview 中单击同一单元格(自定义控件单元格)时,会出现自定义控件。

我遵循了 MSDN 中描述的几乎相同的步骤(上面的链接)。我不知道我错过了什么。请帮忙

4

1 回答 1

0

当您创建一个包含您自己的控件的自定义列/单元格时,datagridview 不知道在显示模式下如何绘制您的控件。当您单击一个单元格时,该单元格进入编辑模式,任何设置为 EditType 的控件都将被使用和显示(并且可以作为 DatagridView.EditingControl 使用)。在显示模式下,您必须重写 DataGridViewCell.Paint 方法才能按照您希望的方式绘制单元格。

于 2013-11-05T12:57:05.223 回答