1

나는 2 개의 열을 가진 gridview를 가졌고, 하나는 textbox 열이고 다른 하나는 checkbox 열이고 어떤 체크 박스가 선택되었는지 알 수있는 방법.DataGridview 내의 특정 확인란을 선택하는 방법을 확인 했습니까?

이미지에 도시 된 바와 같이

enter image description here

내가 표시 할 체크 박스 중 선택되는 것을 가정 그 체크 박스에 대응하는 텍스트 박스 값. ..

누군가가 나를 도울 수 있습니까? 나는 아래의 코드를했는데, 내가 직면하고 문제는 내가 그 이전에 확인 체크 박스 값을 표시하기 옆 체크 박스를 클릭하면 값이 표시지고 있다는 것이다

dataGridView1.CellValueChanged += new DataGridViewCellEventHandler(dataGridView1_CellValueChanged); 

    void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) 
    { 
     object tempObj = dataGridView1.Rows[e.RowIndex].Cells[1].Value; 
     dataGridView1_CurrentCellDirtyStateChanged(sender, e); 

     if (((e.ColumnIndex) == 1) && ((bool)dataGridView1.Rows[e.RowIndex].Cells[1].Value)) 
     { 
      MessageBox.Show(dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString()); 

     } 
    } 
+1

에 대한 해결책을 가지고 이러한 링크의 도움으로 ? 나는 당신이 인터넷에서 검색하려고한다면 여기에 질문을 쓰는 것이 두려울 것입니다 : [datagridview.CellValueChanged event] (http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview .cellvaluechanged.aspx) 또는 [datagridview.CellEndEdit 이벤트] (http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellvaluechanged.aspx) – Fabio

+0

주어진 값을 확인하십시오. 체크 박스의 경우 가능한 값은 true 또는 false입니다. – varocarbas

+0

@varocarbas 귀하의 의견에 동의하지만 intially 체크 박스가 선택되어 있지 않으므로 true와 false를 확인하면 매번 false가 반환됩니다. – Deadlock

답변

3
private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e) 
    { 
     if (dataGridView1.IsCurrentCellDirty) 
     { 
      dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit); 
     } 
    } 

    private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) 
    { 
     if (((e.ColumnIndex) == 1) && ((bool)dataGridView1.Rows[e.RowIndex].Cells[1].Value)) 
     { 
      MessageBox.Show(dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString()); 

     } 
    } 

만큼 간단합니다 .. cellvalue_changed 및 cell_content_click의 개념을 rstand http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellvaluechanged.aspx

와 나는 마침내 당신이 시도했던 어떤 내 문제

+0

줄간 읽기 ... :) – Fabio

1

는 링크 아래에 이러한 운데에 저를 도움이

//replace the row number and column name with your own 
if ((bool)dataGridView1.Rows[0].Cells["Column1"].Value) 
{ 
     //do your work 
} 
+0

"객체가 객체 참조로 설정되지 않았습니다"라는 null 참조 예외가 발생했습니다 – Deadlock

+0

datagridview 이름을 변경 했습니까? 행 번호? 및 열 이름? 그렇다면 지정하는 행에 실제로 레코드가 포함되어 있습니까? DataGrid를 초기화 했습니까? 잘못 될 수있는 많은 것들이 있습니다. 코드를 보여주십시오. – Ehsan

+0

downvote에 대한 이유가 있습니까? – Ehsan

0
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) 
{ 
    if (e.RowIndex > -1 && e.ColumnIndex > -1) 
    label1.Text = dataGridView1.Rows[e.RowIndex].Cells["Col1"].Value.ToString(); 
} 
+0

나는 asp.net 솔루션이 아닌 Windows 폼 솔루션을 원한다. 왜 버튼이 필요한지 ... 나는 체크 박스를 클릭하면 그 텍스트가 표시되어야한다. – Deadlock