我有一个gridview,它有2列,一个是textbox列,另一个是checkbox列,如何知道检查了哪个复选框。
如图所示,假设选中了任何复选框,我想将相应的文本框值显示给该复选框。
任何人都可以帮助我吗?我尝试了下面的代码,但是我面临的问题是,一旦我点击下一个复选框就会显示值,然后显示之前检查过的复选框值。
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());
}
}
答案 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;
}
}
}