当提示对话框点击取消时,DataGridView会删除当前选中行,当点击确定时,DataGridView会删除当前选中行和选中行下面一行。我单步跟踪了一下,在这个函数结束后dataGridViewLightLevel.Rows中的数据还是正确的,不知道在什么地方又删除了一行。请大家帮忙看看
代码如下,使用的是VS2010+.Net Framework 4.0
void dataGridViewLightLevel_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
{
DialogResult diaR = MessageBox.Show("是否删除该行?","确认",MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (diaR == DialogResult.OK)
{
//e.Cancel = false;
foreach (DataGridViewRow r in dataGridViewLightLevel.SelectedRows)
{
if (r.IsNewRow == false)
{
dataGridViewLightLevel.Rows.Remove(r);
}
}
}
}
代码如下,使用的是VS2010+.Net Framework 4.0
void dataGridViewLightLevel_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
{
DialogResult diaR = MessageBox.Show("是否删除该行?","确认",MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (diaR == DialogResult.OK)
{
//e.Cancel = false;
foreach (DataGridViewRow r in dataGridViewLightLevel.SelectedRows)
{
if (r.IsNewRow == false)
{
dataGridViewLightLevel.Rows.Remove(r);
}
}
}
}
void dataGridViewLightLevel_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
{
DialogResult diaR = MessageBox.Show("是否删除该行?","确认",MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (diaR == DialogResult.OK)
{
//e.Cancel = false;
for (int i = dataGridViewLightLevel.SelectedRows.Count; i > 0; i--)
{
DataGridViewRow r = dataGridViewLightLevel.SelectedRows[i - 1];
if (r.IsNewRow == false)
{
dataGridViewLightLevel.Rows.Remove(r);
}
}
}
}
或是
for (int i = 0; i <Count; i++)
{
Delete;//删除方法
i--;
}
你再删除一行,当然是一下删除两行了。