如何将Cell与DataGridViewCell CellType进行比较

时间:2016-07-12 10:06:38

标签: c# winforms datagridview

我有一个DataGridView,其中列中的单元格可以有不同的单元格类型。

例如,第1行中的单元格具有单元格类型DataGridViewTextBoxCell。 第2行中的单元格具有单元格类型DataGridViewImageCell。

如果鼠标位于该列的单元格上,我创建了一个可以执行某些操作的方法:

private void DataTableCellMouseEnter(object sender, DataGridViewCellEventArgs e)
{
    if
    (
        e.RowIndex >= 0 // If the current row is not the header.
        && e.ColumnIndex == dataGridViewDMSSettings.Columns["Example"].Index // And if the current column is the example column.
    )
    {
        // Something happing here.
    }
}

现在我想添加一个单元格类型的比较,以便仅在单元格类型为DataGridViewImageCell时运行代码。

我试图添加...

&& dataGridViewDMSSettings.Rows[e.RowIndex].Cells["Example"].GetType() == DataGridViewImageCell

...但是我收到了IntelliSense消息“DataGridViewImageCell是一种类型,在当前上下文中无效。”

有人有解决方案吗?

1 个答案:

答案 0 :(得分:2)

如评论中所示,您需要使用typeof()运算符将类型用作值。您不能使用类型名称作为没有它的值。

dataGridViewDMSSettings.Rows[e.RowIndex].Cells["Example"].GetType() == 
    typeof(DataGridViewImageCell)

但是,有一种更好的方法来检查某个值是否属于特定类型,那就是is运算符:

dataGridViewDMSSettings.Rows[e.RowIndex].Cells["Example"].GetType() is 
    DataGridViewImageCell

这里的一个重要区别是is尊重继承关系,而==typeof()则需要确切的类型等效。