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

独自のコントロールを含むカスタム列/セルを作成すると、データグリッドビューは表示モードでコントロールを描画する方法を認識しません。セルをクリックすると、セルが編集モードになり、EditType として設定されているコントロールが使用および表示されます (DatagridView.EditingControl として使用できます)。表示モードでは、DataGridViewCell.Paint メソッドをオーバーライドして、希望どおりにセルを描画する必要があります。

于 2013-11-05T12:57:05.223 に答える