3

我正在尝试创建一个自定义函数,将 datagridview 的内容保存到文件中。我这样做而不是序列化,因为我的自定义函数旨在尽可能简单快速地实现以保存和加载 winform 的状态,并且每次我想序列化对象时创建自定义类并不容易和快速尽可能。

为此,我需要以编程方式检测 datagridview 中的哪些列是图像列或复选框列,以便我知道如何在加载时正确处理它们。我在网上看了看,似乎还没有其他人提到过它(据我的谷歌搜索建议),但我绝对确定有某种方法可以判断某个单元格的类型/列/列是。有人知道吗?

4

6 回答 6

2

你可以做这样的事情 -

        foreach (var col in dataGridView1.Columns)
        {
            if (col is DataGridViewImageColumn)
            {
                // Image Column
            }

            if (col is DataGridViewCheckBoxColumn)
            {
                // CheckBox Column
            }
        }
于 2013-02-05T01:25:53.557 回答
1
foreach (DataGridViewRow dr in dataGridView1.Rows) {
  foreach (DataGridViewCell dc in dr.Cells) {
    if (dc.GetType() == typeof(DataGridViewImageCell)) {

    }
  }
}

这应该工作......包括细胞!

于 2013-02-05T01:26:54.610 回答
1

只需比较类型:

        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
            }
        }
于 2021-08-26T17:06:50.063 回答
0

这是我正在使用的:

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

学分: 链接到 VB 论坛

于 2014-02-10T08:29:35.607 回答
0

这应该有效。

 For each col in datagridview.columns   
   If col.CellType.Name = "DataGridViewImageColumn" Then
   'do something
   End If
 Next
于 2017-07-02T21:23:43.300 回答
0

您可能还想研究

column.ValueType
于 2021-09-13T14:47:18.937 回答