首先我会告诉你一些背景知识,我需要创建一个包含动态列的网格,列数将基于用户选择,在我的DataTable中,我将数字添加到列名称以保持其名称不同,然后我绑定它与我的girdview。
现在我需要重命名列headerText并从列标题中删除计数器编号,当我尝试使用以下方法循环grid.columns时,我的网格还有一个非绑定列,其类型为Image;
foreach (DataGridViewTextBoxColumn dgc in grdDistProcessing.Columns)
无法将类型为“System.Windows.Forms.DataGridViewImageColumn”的对象强制转换为“System.Windows.Forms.DataGridViewTextBoxColumn”。
我也使用了DataColumn,但它给了我同样的错误,另一个线程说我们应该使用DataControlField但VS没有识别它,它是ASP的东西吗?或者我错过了参考文献?
请帮助。
RGDS,
答案 0 :(得分:1)
如果您有可用的var关键字(我认为是c#3及以上)。
foreach (var dgc in grdDistProcessing.Columns)
{
if(dgc is DataGridViewImageColumn)
{
//do stuff with it.
var tempDgc = (DataGridViewImageColumn)dgc; //cast it as needed.
//use it
}
}
答案 1 :(得分:0)
感谢scartag,你的解决方案就像一个魅力,就像我探索问题的另一个解决方案一样,我可以使用简单的for循环。
`for (int i = 0; i < grdDistProcessing.Columns.Count; i++)
{
MessageBox.Show(grdDistProcessing.Columns[i].HeaderText);
}`