2013-02-05 6 views
1

http://msdn.microsoft.com/en-us/library/7tas5c80.aspx의 단계를 수행하여 datagridview에 내 사용자 지정 콤보 상자 (ComboBoxEx)를 호스팅했습니다.다른 셀을 선택하는 동안 DatagridView의 사용자 지정 콤보 상자 열이 사라짐

  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 (위의 링크)에서 설명한 것과 거의 동일한 단계를 따라 왔습니다. 나는 실종 된 것을 모른다. 도와주세요

+1

당신이 제공 한 MSDN 링크의 예제와 정확히 같은 예제를 따라 왔습니까? 그 링크에서 1 방법 만 보여줄 때 당신이 가지고 있거나하지 않은 것을 말하기는 어렵습니다. – MethodMan

+0

더 많은 코드와 스크린 샷을 보여줄 필요가 있습니다. – Derek

답변

0

자신의 컨트롤을 사용하여 사용자 지정 열/셀을 만들 때 DataGridview는 표시 모드에서 컨트롤을 그리는 방법을 알지 못합니다. 셀을 클릭하면 셀이 편집 모드로 전환되고 EditType으로 설정된 컨트롤이 사용되어 표시됩니다 (DatagridView.EditingControl로 사용 가능). 표시 모드에서는 DataGridViewCell.Paint 메서드를 재정 의하여 셀을 원하는대로 그려야합니다.