如何知道datagridview中的特定复选框是否已选中?

时间:2013-08-26 08:25:52

标签: c# winforms checkbox datagridview datagridviewcheckboxcell

我有一个gridview,它有2列,一个是textbox列,另一个是checkbox列,如何知道检查了哪个复选框。

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());

        }
    }

4 个答案:

答案 0 :(得分: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的概念。 http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellvaluechanged.aspx

在这些链接的帮助下,我终于得到了我的问题的解决方案

答案 1 :(得分:1)

就像这个

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

答案 2 :(得分: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();
}

答案 3 :(得分:0)

private void dataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    if (e.ColumnIndex == *someIndex*)
    {
        DataGridViewCheckBoxCell cell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex] as DataGridViewCheckBoxCell;
        if (cell != null)
        {
            if (cell.EditingCellValueChanged)
            {
                //CheckBox has been clicked
            }

            //here how to get the checkBoxCell value
            var cellChecked = cell.EditingCellFormattedValue;
        }
    }
}