如何判断datagridview列是图像列还是复选框列?

3
我正在尝试创建一个自定义函数,将datagridview的内容保存到文件中。我这样做是为了提高实现保存和加载winform状态的易用性和快速性,而不是使用序列化。每次想要序列化对象时都创建自定义类不如简单快捷。
为此,我需要在程序中检测哪些datagridview列是图像列或复选框列,以便在加载时适当地处理它们。我查阅了网上资料,但好像没有人提到过这个问题(至少我的谷歌搜索结果没有)。但是我非常确定有一种方法可以知道某个单元格/列是何种类型。是否有人知道?
6个回答

4
您可以这样做 -
        foreach (var col in dataGridView1.Columns)
        {
            if (col is DataGridViewImageColumn)
            {
                // Image Column
            }

            if (col is DataGridViewCheckBoxColumn)
            {
                // CheckBox Column
            }
        }

2

只需与类型进行比较:

        DataGridView dgv = new DataGridView();

        foreach (DataGridViewColumn col in dgv.Columns)
        {
            if (col.GetType() == typeof(DataGridViewCheckBoxColumn))
            {
                // do something
            }
            else if (col.GetType() == typeof(DataGridViewImageColumn))
            {
                // do something else
            }
        }

你能验证一下吗?这段代码在C#中无法编译。 - HardcoreGamer

1
foreach (DataGridViewRow dr in dataGridView1.Rows) {
  foreach (DataGridViewCell dc in dr.Cells) {
    if (dc.GetType() == typeof(DataGridViewImageCell)) {

    }
  }
}

这应该可以运行... 包括单元格!!!

0

你可能也想看看

column.ValueType

0

这应该可以工作。

 For each col in datagridview.columns   
   If col.CellType.Name = "DataGridViewImageColumn" Then
   'do something
   End If
 Next

-1

这是我正在使用的:

Dim colType As Type = DataGridView1.Columns(0).GetType
If colType.Name = "DataGridViewImageColumn" Then
'code for image column type
End If

来源: VB论坛链接


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接