【发布时间】:2011-06-22 12:17:56
【问题描述】:
我正在使用 C# .NET 2.0 Visual Studio 2005。
我遇到了奇怪的问题。
有一个简单的窗口窗体,只有一个 DataGridView,其中 column1 为复选框 (DataGridViewCheckboxColumn)。
然后如果单元格中的复选框被选中,我想删除选中的行。
听起来很简单,但它并没有以某种方式删除所有选中的行,而且我真的不明白为什么它会以这种方式运行。
例如,我有 5 行并选中了每行中的所有复选框,但它只删除了 3 行。有没有人见过这个?这是一个错误还是我做错了什么?
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//when I click the button, all checked row should be removed
private void button1_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if ((bool)row.Cells[0].Value)
{
dataGridView1.Rows.Remove(row);
}
}
}
}
}
【问题讨论】:
-
它是窗口窗体应用程序,我在项目探索中没有看到它
-
对不起,正人先生,我的错误。 :)
-
我认为反向运行 for 循环是更好更快的方法,因为您不会额外列出对象来存储 toDelete 行,而且您只需要一个循环即可完成整个任务。
-
@Charlie:感谢您的洞察力。我的网格删除行为异常的另一个原因是我没有提交更改。 myGrid.CommitEdit(DataGridViewDataErrorContexts.Commit);
标签: c# .net checkbox datagridview