如何允许在DataGridView上插入?

Bru*_*oLM 8 c# datagridview winforms

我绑定了DataGridView一个List<T>.我已经设定了设计师Enable adding.

如果列表为null,我将创建一个空列表,以便显示标题,但它不会为我创建一个空行以便能够添加元素.为什么?如何让用户为此列表添加值?

一些代码

public IEnumerable<Value> ValueList
{
    get;
    set;
}

private void Form1_Load(object sender, EventArgs ev)
{
    if (ValueList == null)
    {
        ValueList = new List<Value>();
    }

    dataGrid.DataSource = ValueList;
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*Jon 13

首先,DataGridView.AllowUserToAddRows必须true(因为你在设计师中设置它).

该财产说

如果DataGridView绑定到数据,则如果此属性和数据源的IBindingList.AllowNew属性都设置为true,则允许用户添加行.

IBindingList.AllowNew (这是不可设置的)也提到:

如果IList.IsFixedSize或IList.IsReadOnly为true,则此属性返回false.

既然你有约束力IEnumerable,我相信IsReadOnlyfalse.尝试将列表公开为a List<T>并绑定到a BindingList<T>.

public List<Value> ValueList
{
    get;
    set;
}

private void Form1_Load(object sender, EventArgs ev)
{
    if (ValueList == null)
    {
        ValueList = new List<Value>();
    }

    dataGrid.DataSource = new BindingList<Value>(ValueList);
}
Run Code Online (Sandbox Code Playgroud)