如何在DataGridView中使用2个复选框进行删除或编辑
本文关键字:复选框 删除 编辑 2个 DataGridView | 更新日期: 2023-09-27 18:18:51
我正在显示DataGridView对象中的数据。第一列表示删除,第二列作为复选框进行编辑,其余的是数据。
当其中一个复选框被选中时,我要做的是对所选数据进行删除和编辑。
当一个复选框被选中时,我卡住了如何做一些事情,基本上是如何检查哪个字段被点击。
我该怎么做?
我有这个取消之前选中的任何其他字段:
public MainWindow()
{
InitializeComponent();
dgvPC.CellContentClick += new DataGridViewCellEventHandler(ContentClick_CellContentClick);
}
void ContentClick_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
foreach (DataGridViewRow row in dgvPC.Rows)
{
row.Cells[Delete1.Name].Value = false;
row.Cells[Edit1.Name].Value = false;
}
}
我添加的数据如下:
if (security.DecryptAES(read.GetString(1), storedAuth.Password, storedAuth.UserName) == "PC Password")
{
// Count PC passwords.
countPC++;
dgvPC.Rows.Add(read.GetInt32(0), false, false,
security.DecryptAES(read.GetString(5), storedAuth.Password, storedAuth.UserName),
security.DecryptAES(read.GetString(6), storedAuth.Password, storedAuth.UserName));
}
从您的陈述中我推断您无法确定正在考虑哪个复选框
所以要缩小范围,你应该尝试使用网格的CellValueChanged
事件
void grd_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if ((sender as DataGridView).CurrentCell is DataGridViewCheckBoxCell)
{
//Now you know its a checkbox
//use the ColumnIndex of the CurrentCell and you would know which is the column
// check the state by casting the value of the cell as boolean
}
}
如果您希望动作是立即的,那么您将不得不提交值,这发生在焦点移出单元格时。尝试处理网格的CurrentCellDirtyStateChanged
像这样的东西应该为你工作
void grd_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (grd.IsCurrentCellDirty)
{
grd.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
}