2013-02-05 17 views
1

我已按照http://msdn.microsoft.com/en-us/library/7tas5c80.aspx中的步驟在datagridview上託管了我的自定義組合框(ComboBoxEx)。DatagridView中的自定義組合框列在選擇另一個單元時消失

  1. 我已經從DataGridViewColumn創建了DataGridVIewComboExColumn。
  2. 從DataGridViewCell創建名爲「DataGridVIewComboExCell」的自定義單元格。
  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方法以根據需要繪製單元格。

相關問題