我使用的是c++/CLI Windows Forms Application。
我有一个DVG,我想通过点击DVG的空白区域来取消选择行。我尝试了几种方法,但都不奏效。1)
System::Void Form1::dataGridView1_MouseDown(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e)
{
if (e->Button == System::Windows::Forms::MouseButtons::Left)
{
if (dataGridView1->HitTest(e->X, e->Y)->Equals(DataGrid::HitTestInfo::Nowhere))
{
dataGridView1->ClearSelection();
}
}
}
2)此变体导致错误(错误1错误C3063:操作符'==':所有操作数必须具有相同的枚举类型))
if (e->Button == System::Windows::Forms::MouseButtons::Left)
{
if ((dataGridView1->HitTest(e->X, e->Y)->Type) == DataGrid::HitTestType::None)
{
dataGridView1->ClearSelection();
}
}
您的变量名称为dataGridView1
。这意味着你用的是DataGridView
,而不是DataGrid
。您应该使用DataGridView::HitTestInfo::Nowhere
而不是DataGrid::HitTestInfo::Nowhere
,使用DataGridViewHitTestType
而不是DataGrid::HitTestType
。
在第一个示例中,您将DataGridView::HitTestInfo
与DataGrid::HitTestInfo::Nowhere
进行比较。你正在调用Equals(object, object)
方法,所以这是一行有效的代码,但是那些是不同的类,永远不会返回相等,这就是为什么选择永远不会被清除。
在第二个示例中,您将DataGridViewHitTestType
与DataGrid::HitTestType
进行比较,这将生成编译器错误。