取消选择DataGridView行

时间:2013-04-17 07:36:40

标签: winforms c++-cli

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

我有一个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();
            }
        }

1 个答案:

答案 0 :(得分:0)

您的变量名称为dataGridView1。这意味着我使用的是DataGridView,而不是DataGrid。您应该使用DataGridView::HitTestInfo::Nowhere代替DataGrid::HitTestInfo::NowhereDataGridViewHitTestType代替DataGrid::HitTestType

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

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