gpt4 book ai didi

c# - DataGridView:对所有选定的行应用编辑

转载 作者:太空狗 更新时间:2023-10-29 21:02:29 25 4
gpt4 key购买 nike

我有一个绑定(bind)到 POCO 对象列表的 DataGridView。 POCO 属性之一是 bool 值,由复选框表示。我想要的是能够选择多行,然后当我单击其中一个复选框时,所有突出显示的行都会选中它们的复选框。举例来说,如果您在 VS 2010 下使用 TFS,我将尝试在 Pending Changes 屏幕上复制该行为。

我的问题是找不到合适的事件来收听。大多数 DataGridView 单击事件似乎在列/行级别运行,我希望在您单击复选框时触发某些事件。 CellContentClick 最接近,但行被取消选择后触发,因此它不会起作用。

有人有什么建议吗?

最佳答案

您可以在 Checkbox 值更改时使用 CurrentCellDirtyStateChanged。但是当这个事件触发时,selectedrows 将会消失。您应该做的就是在它之前保存选定的行。

一个简单的示例:您可以轻松完成它。

DataGridViewSelectedRowCollection selected;

private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
DataGridView dgv = (DataGridView)sender;
DataGridViewCell cell = dgv.CurrentCell;
if (cell.RowIndex >= 0 && cell.ColumnIndex == 1) // My checkbox column
{
// If checkbox value changed, copy it's value to all selectedrows
bool checkvalue = false;
if (dgv.Rows[cell.RowIndex].Cells[cell.ColumnIndex].EditedFormattedValue != null && dgv.Rows[cell.RowIndex].Cells[cell.ColumnIndex].EditedFormattedValue.Equals(true))
checkvalue = true;

for (int i=0; i<selected.Count; i++)
dgv.Rows[selected[i].Index].Cells[cell.ColumnIndex].Value = checkvalue;
}

dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
}

private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
selected = dataGridView1.SelectedRows;
}

关于c# - DataGridView:对所有选定的行应用编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9703003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com