我有another question中的DataGridView,AllowUserToDeleteRows
设置为true
。
docs表示IBindingList.AllowRemove
也应设为true
。但是,List似乎没有那个接口,并且似乎不需要它。一个可以从列表中删除项目。
similar question's answer建议将DataGridView.EditMode
设为EditOnKeystroke
。但这没有用。
那么 - 我如何让它允许用户删除行?
答案 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;
}
}
结果:
答案 1 :(得分:0)
从我可以看到你使用通用List作为DataGridView的数据源。我认为不可能以这种方式自动删除行。您可以使用BindingList替换List并按文档说的那样替换,或者在用户尝试删除行时设置侦听器,将DataSource设置为null,从列表中删除该条目,然后再将该列表分配给数据源(可能无效以强制重绘DataGridView。