,我在最近的應用程序走近這個問題的方法是創建自己的DataGridViewColumn和的DataGridViewCell類繼承關之一現有的如DataGridViewTextBoxColumn和DataGridViewTextBoxCell。
根據您想要的單元格類型,您可以使用其他類型,如Button,Checkbox,ComboBox等。只需查看System.Windows.Forms中可用的類型即可。
單元格將它們的值作爲對象處理,因此您可以將Car類傳遞到單元格的值中。
覆蓋SetValue和GetValue將允許您有任何額外的邏輯來處理該值。
例如:
public class CarCell : System.Windows.Forms.DataGridViewTextBoxCell
{
protected override object GetValue(int rowIndex)
{
Car car = base.GetValue(rowIndex) as Car;
if (car != null)
{
return car.Maker.Name;
}
else
{
return "";
}
}
}
在你需要做的主要事情是設置CellTemplate您的自定義單元格類列類。
public class CarColumn : System.Windows.Forms.DataGridViewTextBoxColumn
{
public CarColumn(): base()
{
CarCell c = new CarCell();
base.CellTemplate = c;
}
}
通過在DataGridView上使用這些自定義列/單元格,它允許您爲DataGridView添加很多額外的功能。
我用它們通過覆蓋GetFormattedValue將自定義格式應用於字符串值來改變顯示的格式。
我也對Paint進行了重寫,這樣我就可以根據值條件進行自定義單元格高亮顯示,根據值將單元格Style.BackColor更改爲我想要的值。
+1我認爲這是一個簡單對象的可靠解決方案 – karlipoppins 2011-04-28 17:10:37
只需要一個屬性就可以了,但它不適用於您想要該對象的多個屬性。 – 2013-01-24 19:57:21