Winforms 取消选择DataGridView行

Winforms 取消选择DataGridView行,winforms,c++-cli,Winforms,C++ Cli,我正在使用C++/CLI Windows窗体应用程序 我有一个DVG,我想通过单击DVG的空白区域来取消选择行。我尝试了几种方法,但没有一种有效。 (一) 2) 此变量导致错误(错误1错误C3063:运算符“=”:所有操作数必须具有相同的枚举类型) ) 变量的名称是dataGridView1。这对我来说意味着你在使用,而不是。您应该使用而不是DataGrid::HitTestInfo::Nowhere,或者使用而不是DataGrid::HitTestType 在第一个示例中,您将DataGrid

我正在使用C++/CLI Windows窗体应用程序

我有一个DVG,我想通过单击DVG的空白区域来取消选择行。我尝试了几种方法,但没有一种有效。 (一)

2) 此变量导致错误(错误1错误C3063:运算符“=”:所有操作数必须具有相同的枚举类型) )


变量的名称是
dataGridView1
。这对我来说意味着你在使用,而不是。您应该使用而不是
DataGrid::HitTestInfo::Nowhere
,或者使用而不是
DataGrid::HitTestType

在第一个示例中,您将
DataGridView::HitTestInfo
DataGrid::HitTestInfo::Nowhere
进行比较。您正在调用
Equals(object,object)
方法,因此它是一行有效的代码,但是这些不同的类永远不会返回equal,这就是为什么选择永远不会被清除

在第二个示例中,您将
DataGridViewHitTestType
DataGrid::HitTestType
进行比较,这将生成编译器错误

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();
            }
        }
    }
if (e->Button == System::Windows::Forms::MouseButtons::Left)
        {
            if ((dataGridView1->HitTest(e->X, e->Y)->Type) == DataGrid::HitTestType::None)
            {
                dataGridView1->ClearSelection();
            }
        }