0

我正在使用 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();
            }
        }
4

1 回答 1

0

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

在您的第一个示例中,您将 aDataGridView::HitTestInfoDataGrid::HitTestInfo::Nowhere. 您正在调用该Equals(object, object)方法,因此它是有效的代码行,但它们是永远不会返回相等的不同类,这就是选择永远不会被清除的原因。

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

于 2013-04-17T11:21:42.467 回答