2012-03-28 72 views
0

我需要使用checkbox_checkChanged事件同时在我的C#应用​​程序的datagridview中勾选多个复选框,当他们使用鼠标先高亮显示他们需要的细胞。 因此,基本上最终用户将使用鼠标突出显示datagridview中的单元格,然后单击复选框2,然后在复选框中勾选它们突出显示单元格的每一行中的复选框。如何使用C#在datagridview中检查多个复选框

这是我的代码,它显示一个窗口,指出已选择多少行/单元格。然后我需要在datagridview中的每个复选框中打勾,在该行中具有突出显示的单元格。目前它将显示窗口记录哪些行/单元格已被选中,然后当单击确定按钮时,它将勾选datagridview中的每个复选框,而不是仅在该行中具有突出显示的单元格的复选框。

private void checkBox2_CheckedChanged(object sender, EventArgs e) 
    { 
     Int32 selectedCellCount = dgv2.GetCellCount(DataGridViewElementStates.Selected); 
     if (selectedCellCount > 0) 
     { 
      if (dgv2.AreAllCellsSelected(true)) 
      { 
       MessageBox.Show("All cells are selected", "Selected Cells"); 
      } 

      else 
      { 
       System.Text.StringBuilder sb = new System.Text.StringBuilder(); 

       for (int i = 0; 
        i < selectedCellCount; i++) 
       { 
        sb.Append("Row: "); 
        sb.Append(dgv2.SelectedCells[i].RowIndex.ToString()); 
        sb.Append(", Column: "); 
        sb.Append(dgv2.SelectedCells[i].ColumnIndex.ToString()); 
        sb.Append(Environment.NewLine); 
       } 


       sb.Append("Total: " + selectedCellCount.ToString()); 
       // confirmation 
       MessageBox.Show(sb.ToString(), "Selected Cells"); 

       foreach (DataGridViewRow row in dgv2.Rows) 
       { 
        row.Cells[2].Value = checkBox2.Checked && String.IsNullOrEmpty(row.Cells[0].ErrorText); 
       } 

      } 
     } 
    } 

请帮助...

回答

0

我看到你的代码是从这里:http://msdn.microsoft.com/en-us/library/x8x9zk5a.aspx但不是这样的:

foreach (DataGridViewRow row in dgv2.Rows) 
{ 
    row.Cells[2].Value = checkBox2.Checked && String.IsNullOrEmpty(row.Cells[0].ErrorText); 
} 

您需要按照文章所说的话,在这里这将指向你在正确的方向:

for (int i = 0; i < selectedCellCount; i++) 
{ 
dataGridView1.SelectedCells[i].Value = true; 
} 
+0

谢谢你杰里米,这完美的作品。 – saas 2012-03-28 06:03:44

相关问题