winform之datagridview中的datagridviewcheckboxcell中复选框如何通过代码来勾上或取消勾上?
我的需求是这样的,当用户点击CHECKBOX勾上复选框时,如果不满足我设定的条件时自动将其已经勾上的勾去掉,我在下面事件中捕捉当前勾上的事件,但是无法将其勾去掉。priv...
我的需求是这样的,当用户点击CHECKBOX勾上复选框时,如果不满足我设定的条件时自动将其已经勾上的勾去掉,我在下面事件中捕捉当前勾上的事件,但是无法将其勾去掉。
private void dgvJointList_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
} 展开
private void dgvJointList_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
} 展开
1个回答
展开全部
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if ((bool)dataGridView1.Rows[e.RowIndex].Cells[你的列下标].EditedFormattedValue == true)
{
dataGridView1.Rows[e.RowIndex].Cells[你的列下标].Value = false;
}
else
{
dataGridView1.Rows[e.RowIndex].Cells[你的列下标].Value = true;
}
}
这个是单个的选中与取消代码
全选的与全取消的,准确说叫反选
for(int i=0;i<dataGridView1.rows.count;i++)
{
if ((bool)dataGridView1.Rows[i].Cells[你的列下标].EditedFormattedValue == true)
{
dataGridView1.Rows[i].Cells[你的列下标].Value = false;
}
else
{
dataGridView1.Rows[i].Cells[你的列下标].Value = true;
}
}
全部选中
for(int i=0;i<dataGridView1.rows.count;i++)
{
if ((bool)dataGridView1.Rows[i].Cells[你的列下标].EditedFormattedValue == true)
{
dataGridView1.Rows[i].Cells[你的列下标].Value = true;
}
}
全部取消
for(int i=0;i<dataGridView1.rows.count;i++)
{
if ((bool)dataGridView1.Rows[i].Cells[你的列下标].EditedFormattedValue == true)
{
dataGridView1.Rows[i].Cells[你的列下标].Value = false;
}
}
追问
谢谢,帮忙看看我的补充的需求
追答
private void dgvJointList_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
}
这个事件是无法处理当前的应用的.因为您可能造成死循环,
CurrentCellDirtyStateChanged该事件是当改变状态时触发,导致您点击在去掉再勾上再去掉(您此时只是恰巧没有触碰到边缘地带)
请使用ContentClick(有两种Cell的推荐)
如果点击判定当前行是否达标否则去掉:
例如我这样
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if ((bool)dataGridView1.Rows[e.RowIndex].Cells[你的列下标].EditedFormattedValue == true)
{
if(你的逻辑判定)
{
符合规则了.
dataGridView1.Rows[e.RowIndex].Cells[你的列下标].Value = true;
}
else
{
dataGridView1.Rows[e.RowIndex].Cells[你的列下标].Value = false;
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询