DataGridView不允许用户删除行

时间:2015-08-24 12:08:26

标签: c# .net winforms datagridview

我有another question中的DataGridView,AllowUserToDeleteRows设置为true

docs表示IBindingList.AllowRemove也应设为true。但是,List似乎没有那个接口,并且似乎不需要它。一个可以从列表中删除项目。

similar question's answer建议将DataGridView.EditMode设为EditOnKeystroke。但这没有用。

那么 - 我如何让它允许用户删除行?

2 个答案:

答案 0 :(得分:2)

我能够毫无问题地删除它:

public class MyDataList : List<MyData>
{
    public MyDataList()
    {
        Add(new MyData { ID = 1, Name = "Name 1" });
        Add(new MyData { ID = 2, Name = "Name 2" });
        Add(new MyData { ID = 3, Name = "Name 3" });
        Add(new MyData { ID = 4, Name = "Name 4" });
        Add(new MyData { ID = 5, Name = "Name 5" });
    }
}


public class MyData
{
    public int ID { get; set; }
    public string Name { get; set; }
}

public partial class Form1 : Form
{
    BindingSource myDataListBindingSource;

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        myDataListBindingSource = new BindingSource();
        myDataListBindingSource.DataSource = new MyDataList();
        dataGridView1.DataSource = myDataListBindingSource;
    }
}

结果:

enter image description here

答案 1 :(得分:0)

从我可以看到你使用通用List作为DataGridView的数据源。我认为不可能以这种方式自动删除行。您可以使用BindingList替换List并按文档说的那样替换,或者在用户尝试删除行时设置侦听器,将DataSource设置为null,从列表中删除该条目,然后再将该列表分配给数据源(可能无效以强制重绘DataGridView。