2011-05-17 24 views
5

Benim datagridview, yalnızca görüntülediği verilerin bazı kayıtları için geçerli bir onay kutusu sütununa sahiptir. Bir onay kutusunun geçerli olmadığı kayıtlar için hiçbir şey göstermemek istiyorum - örneğin boş bir metin kutusu. Bu nedenle, hücre türünü çalışma zamanında bir onay kutusu hücresinden bir metin kutusu hücresine dinamik olarak değiştirmem gerekir. Sütun, metin kutusu ve onay kutusu hücre türlerinin bir karışımına sahip olması gerektiğinden sütun veri türünü değiştiremiyorum.Çalışma zamanında DataGridView Hücre türünü dönüştürme

Şu ana kadar aşağıdaki kodum var.

System.FormatException: Formatted value of the cell has a wrong type.

+0

Ah, Çözüm, Value özelliğinin uygun bir değer verildiğinden emin olmaktır. I.e bir dize değerine ayarlanması gerekiyor. this.deviceList1.DeviceGrid [colIndex, rowIndex] .Value = ""; – Kildareflare

cevap

6

bunu kriteri. Gerçekten basit. Çözüm, Value özelliğine uygun bir değer verilmesini sağlamaktır. I.e bir dize değerine ayarlanması gerekiyor.

this.deviceList1.DeviceGrid[colIndex, rowIndex] = new KryptonDataGridViewTextBoxCell() 
this.deviceList1.DeviceGrid[colIndex, rowIndex].ReadOnly = true; 
this.deviceList1.DeviceGrid[colIndex, rowIndex].Value = ""; 
0

Söz konusu hücre için OnPaint olay işleyicisi kullanmak ve kontrol üzerinde boş bir kare çizin olabilir: Bu Howver

this.deviceList1.DeviceGrid[colIndex, rowIndex] = new KryptonDataGridViewTextBoxCell() 
this.deviceList1.DeviceGrid[colIndex, rowIndex].ReadOnly = true; 

bir DataGridView veri hatası üretir. Bu bir tür hacky ve eminim başka seçenekler var, ama işe yarıyor.

İlgili konular