我们如何通过Code在数据网格视图上多选和删除多行?

时间:2015-12-12 13:18:06

标签: c# datagridview

这是我的代码(这是简单的电话簿,这是删除它的一部分)

      private void btnDeleteFromGV_Click(object sender, EventArgs e)
    {
        try
        {
            dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index);
        }
        catch (Exception)
        {
            MessageBox.Show("PLS Enter a Row");
        }  
    }

我想在数据网格视图中同时选择两行或更多行并能够删除它们

我应该怎么做!?

3 个答案:

答案 0 :(得分:3)

将最初选定的行添加到数组,然后从gridview中删除它们。试试这个:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        dataGridView1.MultiSelect = true;
        dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        var selectedRows = dataGridView1.SelectedRows
            .OfType<DataGridViewRow>()
            .Where(row => !row.IsNewRow)
            .ToArray();

        foreach (var row in selectedRows)
            dataGridView1.Rows.Remove(row);

        dataGridView1.ClearSelection();
    }
}

删除前选定的行: enter image description here

按下按钮后: enter image description here

答案 1 :(得分:2)

不幸的是,我无法完全理解需要什么,但我会留下这里,也许有人会觉得它很有用。
1)删除DataGridView中包含属性的行:RowHeaderVisible=trueSelectionMode=RowHeaderSelectMultiselect=true 选择鼠标和按下按钮,您可以使用此代码:

 private void button1_Click(object sender, EventArgs e)
    {
        int selectedCount = dataGridView1.SelectedRows.Count;
        while (selectedCount > 0)
        {
            if (!dataGridView1.SelectedRows[0].IsNewRow)
                dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index);
            selectedCount--;
        }
        dataGridView1.ClearSelection(); // to cancel auto-selection after the deleting
    }
}

您必须通过点击任何RowHeader 选择一行 2)要删除DataGridView中包含属性的行RowHeaderVisible=falseMultiselect=true 选择鼠标并按下按钮,您需要设置 SelectionMode=FullRowSelect 。代码与1)相同
3)要删除DataGridView中包含属性的行RowHeaderVisible=false/trueSelectionMode=FullRowSelect/RowHeaderSelectMultiselect=true 代码,具体取决于特殊情况条件按下按钮后,您可以使用此代码::

private void button1_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < dataGridView1.RowCount; i++)    // loop's start to check condition
        {
            for (int j = 0; j < dataGridView1.ColumnCount; j++)
            {
                if (Convert.ToInt32(dataGridView1.Rows[i].Cells[j].Value) == -1) // example of condition
                {
                    dataGridView1.Rows[i].Selected = true;
                    break;
                }
            }
        }
        int selectedCount = dataGridView1.SelectedRows.Count;
        while (selectedCount > 0)
        {
            if (!dataGridView1.SelectedRows[0].IsNewRow)
                dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index);
            selectedCount--;
        }
        dataGridView1.ClearSelection();
    }

4)要删除DataGridView 中的行 选择 单元格单元格,您可以使用此代码:

  private void button1_Click(object sender, EventArgs e)
    {
        foreach (DataGridViewCell oneCell in dataGridView1.SelectedCells)
        {
            if (oneCell.Selected)
                dataGridView1.Rows.RemoveAt(oneCell.RowIndex);
        }
    }

答案 2 :(得分:0)

scrollView

您可以编写而不是单元格[4]:数据库中的列ID。