2011-10-25 3 views
0

. 열 머리글을 클릭하면 예외가 발생합니다. NullReferenceException이 사용자 코드에 의해 처리되지 않았습니다. 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.DataGridview에서 selectionchanged 이벤트로 작업 할 때 C# datagridview 셀렉션 변경 이벤트 오류

은 그것의 트리거가 올바른 선택이 아니다 이벤트가 (예. -1) 따라서이 예외를 던지기 때문에 가능성이 오류를 받고있어 내 코드

private void dgvEvents_SelectionChanged(object sender, EventArgs e) 
    { 
     // 
     //Select By EventID Operation. 
     // 
     eventID = int.Parse(dgvEvents.Rows[dgvEvents.CurrentRow.Index].Cells["EventID"].Value.ToString()); 
     EventEntity = EventsMethods.SelectByID(eventID); 
     txtEventName.Text = EventEntity.Name; 
     cboxEventsCategories.SelectedValue = EventEntity.EventCategoryID; 
     dateTimePickerEvent.Text = EventEntity.Date.ToString(); 
     txtBenefNum.Text = EventEntity.BeneficiariesNumber.ToString(); 
     txtResultB.Text = EventEntity.ResultBefore.ToString(); 
     txtResultA.Text = EventEntity.ResultAfter.ToString(); 
     txtPercentage.Text = EventEntity.Percentage.ToString(); 
     // 
     //Show EventsMembers. 
     // 
     FillEventsMembersDGV(); 
    } 
+0

6 행의 예외 : –

+0

eventID = int.Parse (dgvEvents.Rows [dgvEvents.CurrentRow.Index] .Cells [ "EventID"] .Value.ToString()); –

답변

0

하나 ...

dgvEvents.Rows[dgvEvents.CurrentRow.Index].Cells["EventID"].Value.ToSt‌​ring() 

다음 중 하나 일 수 있습니다

dgvEvents 
dgvEvents.CurrentRow 
dgvEvents.Rows[....] 
dgvEvents.Rows[....].Cells 
dgvEvents.Rows[....].Cells["EventID"] 
dgvEvents.Rows[....].Cells["EventID"].Value 

가장 좋은 방법을 찾기 위해 것 단계로 나누기 :

var curRow= dvgEvents.CurrentRow; 
    if (curRow != null) 
     var index = curRow.Index; 

// etc 
+0

고맙습니다. 이 문제에 대한 아이디어를 알려주세요. –

0

입니다. 이 시도 : null 객체를 반환하는 이들의

if ((e.RowIndex >= 0) && (e.ColumnIndex >= 0)) 
    { 
      // 
      //Select By EventID Operation. 
      // 

      //Also, use Convert.ToString() rather than .ToString(); 
      eventID = int.Parse(Convert.ToString(dgvEvents.Rows[dgvEvents.CurrentRow.Index].Cells["EventID"].Value)); 
      EventEntity = EventsMethods.SelectByID(eventID); 
      txtEventName.Text = EventEntity.Name; 
      cboxEventsCategories.SelectedValue = EventEntity.EventCategoryID; 
      dateTimePickerEvent.Text = EventEntity.Date.ToString(); 
      txtBenefNum.Text = EventEntity.BeneficiariesNumber.ToString(); 
      txtResultB.Text = EventEntity.ResultBefore.ToString(); 
      txtResultA.Text = EventEntity.ResultAfter.ToString(); 
      txtPercentage.Text = EventEntity.Percentage.ToString(); 
      // 
      //Show EventsMembers. 
      // 
      FillEventsMembersDGV(); 
    } 
+0

라인 6의 예외 : eventID = int.Parse (dgvEvents.Rows [dgvEvents.CurrentRow.Index] .Cells [ "EventID"] .Value.ToString()); –

+0

나는 그 글을 편집했다. 희망이 도움이 – Corylulu