删除datagridview中的多个行

use*_*084 5 c# datagridview winforms

我有一个函数删除datagridview中右键单击删除的单行.

码:

  private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
    {

            if (e.Button == MouseButtons.Right)
            {
                var hti = dataGridView1.HitTest(e.X, e.Y);
                if (hti.RowIndex != -1)
                {
                    dataGridView1.ClearSelection();
                    dataGridView1.Rows[hti.RowIndex].Selected = true;
                }
            }          
    }

    private void DeleteRow_Click(object sender, EventArgs e)
    {
            Int32 rowToDelete = dataGridView1.Rows.GetFirstRow(DataGridViewElementStates.Selected);
            if (rowToDelete != -1)
            {
                dataGridView1.Rows.RemoveAt(rowToDelete);
                dataGridView1.ClearSelection();
            }          
    }
Run Code Online (Sandbox Code Playgroud)

但现在我想在选择时删除多行.
首先我不知道为什么我不能选择多行.
其次我想使用删除按钮删除多个删除并右键单击鼠标删除.

有人能帮我吗?

Bry*_*sby 9

编辑:看看你的代码.您正在根据HitTest方法的结果设置选定的行.该DataGridView属性SelectedRows将确定选择哪些行.不确定为什么你需要执行a HitTest,但是你可能还没有完全解释所需的功能.

if (e.Button == MouseButtons.Right)
{
    var hti = dataGridView1.HitTest(e.X, e.Y);
    if (hti.RowIndex != -1)
    {
        dataGridView1.ClearSelection();
        dataGridView1.Rows[hti.RowIndex].Selected = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

确保在数据网格上将MultiSelect属性设置为true.

然后,您可以SelectedRows在您选择的情况下使用该物业:

foreach (DataGridViewRow row in DataGridView1.SelectedRows)
{
    DataGridView1.Rows.Remove(row);
}
Run Code Online (Sandbox Code Playgroud)