2011-11-30 43 views
3

我想在一個DataGridView單元格中顯示自定義的控制,這樣我可以很好地顯示格式化信息的單元格的內容。如何使用自定義控制在編輯一個DataGridView

我與接受對象作爲其數據源的列表,使用DataGridView控件的很舒服。我也很喜歡在cellformatting事件中填充單元格內容。

所以我打算,而不是使用正常的文本框控件,datagridview單元格中的按鈕控件和鏈接文本控件,顯示我自己的自定義控件,這是顯示一些自定義數據,如名稱,地址,電話,照片和別的。這將是我的應用程序的一個很好的改進。

我希望得到一些建議等方法來實現這一點。

+0

你或許應該確認這是否是ASP.Net或的WinForms,等等。 – LarsTech

+0

它的一個winfirm應用程序.... – KoolKabin

回答

3

有幾個步驟,這個整齊地嵌入您自定義用戶控件到DataGridView的作爲編輯該網格中單元格使用的控件。

首先,你需要寫一個從您的自定義控制實現IDataGridViewEditingControl繼承的類。這給你一個封裝你的自定義控件的DataGridViewEditingControl類。把它叫做CustomDataGridViewEditingControl

這個接口上的一些關鍵方法需要完成; * EditingControlFormattingValue將需要返回代表你的值。 * EditingControlWantsInputKey將控制你想要什麼特殊的鍵擊允許或禁止

一旦你在地方有這個CustomDataGridViewEditingControl,封裝自定義控件,您需要創建另一個類,它繼承DataGridViewTextBoxCell。將其稱爲CustomDataGridViewCell

這是代表在它您的自定義控制細胞的類。設置一個模塊級變量作爲CustomDataGridViewEditingControl

private MyCustomGridViewEditingControl _editControl; 

然後,覆蓋的實例:

InitializeEditingControl - 設置你的自定義控制需要任何默認值。通常你首先需要調用base.initialiseEditingControl來傳入覆蓋方法接收到的參數。

值類型 - 返回的數據類型定製控件代表如返回typeof(DateTime)

EditType - 返回編輯控件的類型,例如返回的typeof(MyCustomControl)

DefaultNewRowValue如果你需要每次在DataGridView請求(插入)新的編輯行

提供一個默認值編輯控制器接下來你需要喲使用本重寫DataGridViewCell(CustomDataGridViewCell)類作爲您正在使用的列的CellTemplate屬性。我已經實現了自定義的DataGridViewColumns來控制過去,但這可能比您想要/需要去的更進一步。 (如果你想要在很多網格中使用自定義控件,那麼你可以這樣做)

爲此,創建一個從DataGridViewTextBoxColumn繼承的類,並將其CellTemplate屬性設置爲您的實例CustomDataGridViewCell

這很令人困惑,因爲很多術語和類有相似的名稱 - 希望這可以提供幫助。

總結: 1)創建一個CustomDataGridViewEditingControl - 從您的自定義用戶控件繼承,但實現IDataGridViewEditingControl

2)創建CustomDataGridViewCell - 這用作其編輯CustomDataGridViewEditingControl(步驟1)控制。

3)使用作爲的DataGridViewColumn

希望這是夠清楚的CellTemplate您CustomDataGridViewCell(步驟2)...

相關問題