【发布时间】:2012-11-20 15:10:27
【问题描述】:
这个想法是:当用户选择一个或多个单元格然后单击删除按钮时,Datagridview 将删除这些选定单元格的整行。当没有任何内容显示如何删除多个单元格行时,我的思绪被炸毁了。如果删除选定的行或单个单元格,问题很简单。但是多细胞问题是......
可能会出现一些问题:索引越界,删除整个gridview...
假设gridview内容2列,gridview中的数据不是来自db。
我试过这段代码:
while(dgv1.selectedCells.count>0){
dgv1.removeAt(dgv1.selectedCells[0].RowIndex);
}
但是这个删除了整个datagridview,因为当gridview删除一行时,它会选择第一个单元格(第一列,第一行)。
然后我试试这个:
List<int> rowToDelete = new List<int>();
foreach(DataGridViewCell cell in dgv1.selectedCells){
rowToDelete.add(cell.RowIndex);
}
然后从列表中删除gridview Rows,但这可能会出现相同的rows索引被添加,导致错误的行被删除,并且可能使代码更复杂。 请帮忙。
已编辑:按照 yatrix 的建议,我使用了这段代码(我想我得到了他的建议)
for (int i = dataGridView1.SelectedCells.Count -1; i >=0; i--)
{
dataGridView1.Rows.RemoveAt(dataGridView1.SelectedCells[i].RowIndex);
}
但是当我选择的单元格超过 Rows.Count 时,会发生索引超出范围异常。 另外,如果我在同一行中选择 2 个单元格,则会导致删除错误的行(下一行)。这是我的主要问题。
Ps:我正在尝试制作一个程序来重命名 Windows 中的多个文件。
【问题讨论】:
标签: c# datagridview