Winfrom中的保存和反选
原创我这边是以DataGridView来讲的,先看一下页面和使用效果图如下:
实现这样的效果,我用了三个控件,DataGridView、Button和CheckBox,每个控件又对应了一个方法:
分别对应的是, Button和CheckBox都是Click事件,DataGridView是CellContentClick(单击单元格的内容时发生)。
具体的方法代码如下:
///
/// 反选
///
///
///
private void btnSelInfo_Click(object sender, EventArgs e)
{
bool nocheck = false;//标识是否有未选中的
for (int i = 0; i < dgvInfo.Rows.Count; i++)
{
if (Convert.ToBoolean(dgvInfo.Rows[i].Cells[0].Value) == true)
{
dgvInfo.Rows[i].Cells[0].Value = false;
nocheck = true;
}
else
{
dgvInfo.Rows[i].Cells[0].Value = true;
}
}
//有未选中的就把全选按钮改成false
if (nocheck)
{
cbSelAll.Checked = false;
}
else
{
cbSelAll.Checked = true;
}
}
///
/// 全选
///
///
///
private void cbSelAll_Click(object sender, EventArgs e)
{
for (int i = 0; i < dgvInfo.Rows.Count; i++)
{
//让DataGridView里的行选中状态,永远等于全选按钮的状态就可以了。
dgvInfo.Rows[i].Cells[0].Value = cbSelAll.CheckState;
}
}
///
/// 单元格改变选中状态时
///
///
///
private void dgvInfo_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
DataGridViewCell dgvc = (sender as DataGridView).CurrentCell;//获取当前操作的单元格对象
if (dgvc.ColumnIndex == 0)//判断是否为第一列,因为我的CheckBox列是在第一列所以直接写死。
{
dgvInfo.EndEdit();//这一步很重要,不结束编辑是获取不到最新值的,切记!!!
bool check = Convert.ToBoolean(dgvInfo.Rows[dgvc.RowIndex].Cells[0].Value);
//这一步就是用来控制,全选CheckBox按钮是否要被选中
if (check == true)
{
for (int i = 0; i < dgvInfo.Rows.Count; i++)
{
if (Convert.ToBoolean(dgvInfo.Rows[i].Cells[0].Value) == false)
{
return;
}
}
this.cbSelAll.Checked = true;
}
else
{
cbSelAll.Checked = false;
}
}
}
希望对你有帮助哦!!!
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除