C# DataGridView-AllowUserToAddress做什么?

C# DataGridView-AllowUserToAddress做什么?,c#,datagridview,C#,Datagridview,我本以为这个设置会影响控件本身,但我似乎不能仅仅通过将AllowUserToAddress设置为true的DataGridView来添加新行。我只是在使用我的鼠标和键盘方面的垃圾,还是我完全误解了这个属性?我怀疑是后者,尽管我在文档中找不到多少东西来为我指明正确的方向 编辑:顺便说一下,我不是垃圾,这似乎与使用列表作为DataGridView的数据源有关;如果我绑定到列表,小“*”就不会出现。试试看 DataTable dt = new DataTable(); dt.Columns.Add("

我本以为这个设置会影响控件本身,但我似乎不能仅仅通过将AllowUserToAddress设置为true的DataGridView来添加新行。我只是在使用我的鼠标和键盘方面的垃圾,还是我完全误解了这个属性?我怀疑是后者,尽管我在文档中找不到多少东西来为我指明正确的方向

编辑:顺便说一下,我不是垃圾,这似乎与使用列表作为DataGridView的数据源有关;如果我绑定到列表,小“*”就不会出现。

试试看

DataTable dt = new DataTable();
dt.Columns.Add("No", typeof(int));
dt.Columns.Add("Name");
dataGridView1.AllowUserToAddRows = true;
dataGridView1.EditMode = DataGridViewEditMode.EditOnKeystroke;
dataGridView1.DataSource = dt;
编辑:


看看

我通过将STMTTRN从一个列表更改为一个BindingList解决了这个问题-列表在用作数据源时似乎有一些非常奇怪的行为(请参阅我最近提出的另一个问题,它也是以同样的方式解决的)


它在生成的代码中,但我已经将其从数组更改为列表,因此BindingList几乎没有额外的麻烦:)

我也遇到了同样的问题

使用BindingSource作为DGV数据源并设置BindingSource属性AllowNew=True,解决了我的问题

Dim binding As New BindingSource
binding.DataSource = myList
binding.AllowNew = True
With DataGridView1
    .AutoGenerateColumns = False
    .DataSource = binding
End With

我也遇到了同样的问题,
BindingList
并没有解决它,但梅林的回答给了我一个最终解决方案的提示

BindingSource
中包装列表是解决方案的一个重要部分(另一个问题中也有说明:)

对我来说,缺少的一步是列表中对象的类没有公共的无参数构造函数。添加启用了无参数构造函数的
allowUserToAddress
以按预期运行

我从尝试merlin的答案时引发的异常中得到了线索,该异常的消息表明,也可以通过处理
AddingNew
事件来启用行添加:

无法对“MyType”类型调用AddNew。这种类型没有 公共默认构造函数。您可以在“MyType”类型上调用AddNew 如果处理AddingNew事件并创建适当的对象


我没有尝试此操作,因为幸运的是,添加公共无参数构造函数对我来说没有问题,但对于无法添加无参数构造函数的其他人来说,这是一个希望的信息。

我尝试了您的代码,它成功了,所以谢谢:)但我实际上使用了列表作为数据源,这(因为这是唯一的区别)可能是我的问题的原因。您知道为什么列表会使“添加行”功能不起作用吗?实现IBindingList接口。