Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 删除datagridview中的多行_C#_Winforms_Datagridview - Fatal编程技术网

C# 删除datagridview中的多行

C# 删除datagridview中的多行,c#,winforms,datagridview,C#,Winforms,Datagridview,我有一个功能,可以在datagridview中右键单击delete删除单行 代码: 但现在我想删除所选内容的多行。 首先,我不知道为什么不能选择多行。 第二,我想删除多个删除使用删除按钮和右键单击鼠标删除 有人能帮我吗?编辑: 看看你的代码。您正在根据HitTest方法的结果设置所选行。DataGridView属性SelectedRows将确定选择哪些行。不确定为什么需要执行HitTest,但可能您还没有完全解释所需的功能 if (e.Button == MouseButtons.Right)

我有一个功能,可以在datagridview中右键单击delete删除单行

代码:

但现在我想删除所选内容的多行。
首先,我不知道为什么不能选择多行。
第二,我想删除多个删除使用删除按钮和右键单击鼠标删除

有人能帮我吗?

编辑: 看看你的代码。您正在根据
HitTest
方法的结果设置所选行。
DataGridView
属性
SelectedRows
将确定选择哪些行。不确定为什么需要执行
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;
    }
}
确保数据网格上的
MultiSelect
属性设置为
true

然后,您可以在选择的情况下使用
SelectedRows
属性:

foreach (DataGridViewRow row in DataGridView1.SelectedRows)
{
    DataGridView1.Rows.Remove(row);
}

请注意以下情况:

如果需要删除datagrid中的记录, 不要只在datagrid中存储rowIndex(而是应该在DB中存储相应的键):

我想删除datagrid中的第1行和第2行,我将它们的行索引存储在datagrid中。 在datagrid中删除第1行后,第2行中的数据将上移到第1行,并且 第3行中的数据将上移到第2行, 因为您使用datagrid rowIndex查找要删除的数据,因此, 结果:最终删除数据1和数据3

            foreach (DataGridViewRow row in dgShow.SelectedRows)
            {
                string id = row.Cells[4].Value.ToString();
                int x = Convert.ToInt16(id);
                var del = context.ServicesPrice.Where(current => current.Id == x).FirstOrDefault();
                context.ServicesPrice.Remove(del);
            }

您可以在数据库中写入列id,而不是单元格[4]。

多选有效。。但右键点击删除。。。当我选择多行并右键单击时,它只选择一行。。。如果您检查了datagrid的
SelectionMode
属性,为什么会发生这种情况?您确定选择的是整行而不仅仅是单元格吗?是的,我选择的是整行而不仅仅是单元格..选择模式在哪里。。??感谢我的选择模式是行标题选择
            foreach (DataGridViewRow row in dgShow.SelectedRows)
            {
                string id = row.Cells[4].Value.ToString();
                int x = Convert.ToInt16(id);
                var del = context.ServicesPrice.Where(current => current.Id == x).FirstOrDefault();
                context.ServicesPrice.Remove(del);
            }