2013-05-15 49 views
0

我正在製作一個應用程序,其中有一個頁面,裏面有一個按鈕和一個datagridview。DataGridView和CheckBoxes

數據來自MySQL和人口做這樣:

this.ObjectsTable.Rows.Add(Objects.GetValue(index, 0), 
          Objects.GetValue(index, 1), 
          Objects.GetValue(index, 2), 
          Objects.GetValue(index, 3)); 

問題:

我不能選中複選框。從字面上看。當我點擊它時,它只是 「按下/按下」狀態,但永遠不會「檢查」。

如何解決這個問題?以及如何得到其複選框被選中的行? 我想創建一個數組,然後遍歷它們。

+0

你能可能顯示在GridView的一些前端代碼? – TheGeekZn

回答

1

首先檢查您的DataGridViewEnabled還是不是ReadOnly,如果這沒有幫助檢查Column是不是隻讀。

你問題的第二部分問題的答案取決於你是否想立即知道哪個CheckBox已被選中或不被選中。爲是,則使用此事件:

private void GridCellValueChanged(object sender, DataGridViewCellEventArgs e) 
{ 
    if (e.RowIndex < 0 || e.ColumnIndex < 0) 
    { 
     return; 
    } 

    if (dataGridView1[e.ColumnIndex, e.RowIndex] is DataGridViewCheckBoxCell) 
    { 
     var check = (dataGridView1[e.ColumnIndex, e.RowIndex].Value as bool?) ?? false; 

     if (check) 
     { 
      //checked 
     } 
    } 
} 

或只是通過所有行迭代,並檢查電池的價值與複選框:

foreach (DataGridViewRow row in dataGridView1.Rows) 
{ 
     var check = (row.Cells[0].Value as bool?) ?? false; 
} 
+0

對不起劫持,但我正在尋找相同的答案。我偶然發現了cellvaluechanged事件,但是我遇到的問題是,當表單被加載並且數據從SQL填充時,它將註冊爲cellvaluechanged事件並嘗試執行檢查。我在那裏放了一個if checkstate.unchecked exit sub,但是當我試圖同時檢查下一行並退出檢查時,我得到應用程序崩潰。有什麼辦法呢? – gwhenning