DataGridView – AllowUserToAddRows做了什么?
我期望这个设置会影响控件本身,但我似乎无法通过将AllowUserToAddRows设置为true的DataGridView添加新行。 我只是垃圾使用我的鼠标和键盘,还是我完全误解了这个属性? 我怀疑它是后者,虽然我在文档的方式上找不到太多指向正确的方向。
编辑:顺便说一句,这不是我的垃圾,它似乎与使用List作为DataGridView的DataSource有关; 如果我绑定到List,那么小’*’就不会出现。
我通过将STMTTRN从List更改为BindingList来解决这个问题 – 当用作DataSource时,List似乎有一些非常奇怪的行为(请参阅我最近的另一个问题,它以相同的方式解决)。
它是在生成的代码中,但我已经将它从一个数组更改为一个List,所以BindingList几乎没有任何额外的麻烦:)
试试吧,
DataTable dt = new DataTable(); dt.Columns.Add("No", typeof(int)); dt.Columns.Add("Name"); dataGridView1.AllowUserToAddRows = true; dataGridView1.EditMode = DataGridViewEditMode.EditOnKeystroke; dataGridView1.DataSource = dt;
编辑:
看看IBindingList
对我来说同样的问题, BindingList
并没有解决它,但是Merlin的回答给了我一个最终解决方案的暗示。
将列表包装在BindingSource
是解决方案的一个重要部分(另外还有一个问题: 无法允许用户使用List <> Datasource将行添加到DataGridView )。
对我来说,缺少的一步是我列表中的对象类没有公共无参数构造函数 。 添加无参数构造函数使AllowUserToAddRows
按预期运行。
我从一个exception中得到了一个线索,当我尝试了merlin的回答时,它引发了一个exception,其中的消息表明也可以通过处理AddingNew
事件来启用行添加:
无法在“MyType”类型上调用AddNew。 此类型没有公共默认构造函数。 如果处理AddingNew事件并创建适当的对象,则可以在“MyType”类型上调用AddNew。
我没有试过这个,幸运的是,添加一个公共无参数构造函数对我来说没问题,但对于那些无法添加无参数构造函数的人来说,这是一个希望的信息。
我有同样的问题。
使用BindingSource作为DGV数据源并设置BindingSource属性AllowNew = True,解决了我的问题。
上述就是C#学习教程:DataGridView – AllowUserToAddRows做了什么?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
Dim binding As New BindingSource binding.DataSource = myList binding.AllowNew = True With DataGridView1 .AutoGenerateColumns = False .DataSource = binding End With
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/989565.html