DatagridView中的自定义组合框列在选择另一个单元格时消失

时间:2013-02-05 15:56:12

标签: c# datagridview custom-controls datagridviewcombobox

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

  1. 我已经从DataGridViewColumn创建了DataGridVIewComboExColumn。
  2. 自定义单元名为" DataGridVIewComboExCell"是从DataGridViewCell创建的。
  3. 最后我的自定义编辑控件" ComboExEditCtrl" (从ComboBoxEx派生并实现IDataGridViewEditingControl)已创建。
  4. 在ComboExEditCtrl中,OnSelectedValueChanged方法被覆盖如下。

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

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

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

1 个答案:

答案 0 :(得分:0)

当您使用自己的控件创建自定义列/单元格时,datagridview不知道在显示模式下如何绘制控件。当您单击一个单元格时,单元格将进入编辑模式,并且将使用和显示设置为EditType的任何控件(并且可用作DatagridView.EditingControl)。在显示模式下,您必须覆盖DataGridViewCell.Paint方法以根据需要绘制单元格。