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これは、 ではなくを使用していることを意味しますDataGridDataGridView::HitTestInfo::Nowhereの代わりにDataGrid::HitTestInfo::Nowhere、およびのDataGridViewHitTestType代わりに使用する必要がありDataGrid::HitTestTypeます。

DataGridView::HitTestInfo最初の例では、 aをと比較していDataGrid::HitTestInfo::Nowhereます。メソッドを呼び出しているEquals(object, object)ので、有効なコード行ですが、これらは異なるクラスであり、決して等しい値を返さないため、選択がクリアされません。

DataGridViewHitTestType2 番目の例では、 a とa を比較しているDataGrid::HitTestTypeため、コンパイラ エラーが発生します。

于 2013-04-17T11:21:42.467 に答える