如何使用 C# 检查 datagridview 中的多个复选框

Posted

技术标签:

【中文标题】如何使用 C# 检查 datagridview 中的多个复选框【英文标题】:How to check multiple checkboxes in the datagridview using C# 【发布时间】:2012-03-28 04:34:43 【问题描述】:

当最终用户使用鼠标首先突出显示所需的单元格时,我需要使最终用户能够同时勾选我的 C# 应用程序的 datagridview 中的多个复选框,使用 checkbox_checkChanged 事件。 所以基本上最终用户将使用他们的鼠标突出显示 datagridview 中的单元格,然后单击复选框2,然后应该勾选他们突出显示单元格的每一行中的复选框。

这是我的代码,它显示一个窗口,说明已选择了多少行/单元格。然后,我需要勾选 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);
                

            
        
    

请帮忙...

【问题讨论】:

【参考方案1】:

我看到你的代码来自这里: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;

【讨论】:

以上是关于如何使用 C# 检查 datagridview 中的多个复选框的主要内容,如果未能解决你的问题,请参考以下文章

C#中dataGridView的列顺序问题

如何使用 C# 在 datagridview 控件中显示某些表架构列?

将 DataGridView 单元格 BackColor 传递给变量以供以后在 c# 中使用

如何在 C# 中获取 DataGridView 中的主键?

c#如何使用线程操作datagridview

如何在 C# WinForms 中使用 LINQ 从 DataGridView 中选择多个字段