我有一个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是一种类型,在当前上下文中无效。”
有人有解决方案吗?
答案 0 :(得分:2)
如评论中所示,您需要使用typeof()
运算符将类型用作值。您不能使用类型名称作为没有它的值。
dataGridViewDMSSettings.Rows[e.RowIndex].Cells["Example"].GetType() ==
typeof(DataGridViewImageCell)
但是,有一种更好的方法来检查某个值是否属于特定类型,那就是is
运算符:
dataGridViewDMSSettings.Rows[e.RowIndex].Cells["Example"].GetType() is
DataGridViewImageCell
这里的一个重要区别是is
尊重继承关系,而==
加typeof()
则需要确切的类型等效。