2014-01-11 151 views
1

我在加載數據的Windows窗體中有一個Datagridview。在運行時,我還在此Datagridview中包含了一個複選框列。我的問題是如何知道複選框列中的任何複選框是否已被選中,並且如果複選框已被選中,請啓用按鈕。我已經使用CellValueChanged事件來執行上述任務,但無法獲得所需的結果。如何檢查在datagridview列中是否選中複選框

這是我做了什麼

List<int> ChkedRow = new List<int>(); 

     for (int i = 0; i <= Datagridview1.RowCount - 1; i++) 
     { 
      if (Convert.ToBoolean(Datagridview1.Rows[i].Cells["chkcol"].Value) == true) 
      { 
       button1.Enabled = true; 
      } 
      else 
      { 
       button1.Enabled = false; 
      } 

     } 

回答

0

試試這個代碼

button1.Enabled = false; 
foreach (DataGridViewRow row in Datagridview1.Rows) 
{ 
    if (((DataGridViewCheckBoxCell)row.Cells["chkcol"]).Value) 
     { 
     button1.Enabled = true; 
     break; 
     } 

} 

//This will always call the checking of checkbox whenever you ticked the checkbox in the datagrid 
private void DataGridView1_CellValueChanged(
    object sender, DataGridViewCellEventArgs e) 
{ 
    if (e.ColumnIndex == [Your column index]) 
     CheckForCheckedValue(); 
} 

private void CheckForCheckedValue() 
{ 
    button1.Enabled = false; 
    foreach (DataGridViewRow row in Datagridview1.Rows) 
    { 
    if (((DataGridViewCheckBoxCell)row.Cells["chkcol"]).Value) 
     { 
     button1.Enabled = true; 
     break; 
     } 
    } 
} 

注意 不要忘記檢查Null值,如果它是NULL

+0

上面的代碼工作,但是當我取消所有複選框,按鈕沒有被禁用,甚至在其他部分添加button1.Enabled = false – suds

+1

你應該添加調用這個函數在CellValueChanged datagridview並檢查複選框的單元格是否爲更改值並執行代碼的單元格 – Jade

+0

請參閱我的更新代碼 – Jade

1

設置false循環

button1.Enabled = false; 

當你發現檢查項目之前,將其設置爲啓用truebreak循環

button1.Enabled = true; 
break; 

code:

button1.Enabled = false; 
for (int i = 0; i <= Datagridview1.RowCount - 1; i++) 
{ 

    if (Convert.ToBoolean(Datagridview1.Rows[i].Cells["chkcol"].Value)) 
    { 
     button1.Enabled = true; 
     break; 
    } 
} 

或者你可以做以下以及

button1.Enabled = false; 
foreach (DataGridViewRow row in dataGridView1.Rows) 
{ 
    DataGridViewCheckBoxCell cell = row.Cells[colCheckIndex] as DataGridViewCheckBoxCell; 
    if (cell.Value == cell.TrueValue){ 
     button1.Enabled = true; 
     break; 
    } 
} 
+0

請注意,我想檢查是否有任何一個複選框已被選中。即用戶選中列中的任何複選框,應啓用按鈕,並且如果未選中複選框,則應禁用按鈕。 – suds

+0

@SDKLive檢查最終代碼 – Damith

+0

它不工作:( – suds

相關問題