2013-04-17 3 views
0

Forms 응용 프로그램.선택 해제 된 DataGridView 행

은 내가 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(); 
      } 
     } 

답변

0

의 이름 당신의 변수는 dataGridView1입니다. 당신이 DataGridDataGridView을하지 사용하고 있는지 그건 나에게 의미한다. 당신은 DataGridView::HitTestInfo::Nowhere 대신 DataGrid::HitTestInfo::NowhereDataGridViewHitTestType 대신 DataGrid::HitTestType를 사용한다. 첫 번째 예에서

, 당신은 DataGridView::HitTestInfoDataGrid::HitTestInfo::Nowhere에 비교하고 있습니다. 당신은 Equals(object, object) 메소드를 호출하고, 그래서 코드의 유효 라인,하지만 사람들은 선택을 취소하지 지 않습니다 이유입니다, 동일한 반환하지 않습니다 다른 클래스입니다.

두 번째 예에서는 DataGridViewHitTestTypeDataGrid::HitTestType을 비교하면 컴파일러 오류가 발생합니다.