AllowUserToAddRows 不适用于 List<> DataGridView 上的数据源

发布于 2024-08-07 22:23:56 字数 366 浏览 6 评论 0 原文

我有一个 DataGridView,其中 DataSource 设置为 List

但是,当我设置 AllowUserToAddRows 时,新行指示器不会显示true

当我将 DataSource 设置为 BindingList 时,这似乎解决了问题。

:应该用 BindingList 替换我的 List 还是有更好的解决方案?

I have a DataGridView with the DataSource set to List<myClass>

However, the new row indicator does not display when I set AllowUserToAddRows to true,

When I set the DataSource to BindingList<myClass>, that seems to solve the problem.

Q: Should replace my List<> with BindingList<> or there is better solution?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

春夜浅 2024-08-14 22:23:56

myClass 是否有公共无参数构造函数?如果没有,您可以从 BindingList 派生并重写 AddNewCore 以调用自定义构造函数。

(编辑)或者 - 只需将您的列表包装在 BindingSource 中,它就可以工作:

using System;
using System.Windows.Forms;
using System.Collections.Generic;
public class Person {
    public string Name { get; set; }

    [STAThread]
    static void Main() {
        var people = new List<Person> { new Person { Name = "Fred" } };
        BindingSource bs = new BindingSource();
        bs.DataSource = people;

        Application.Run(new Form { Controls = { new DataGridView {
            Dock = DockStyle.Fill, DataSource = bs } } });
    }
}

Does myClass have a public parameterless constructor? If not, you could derive from BindingList<T> and override AddNewCore to call your custom constructor.

(edit) Alternatively - just wrap your list in a BindingSource and it may work:

using System;
using System.Windows.Forms;
using System.Collections.Generic;
public class Person {
    public string Name { get; set; }

    [STAThread]
    static void Main() {
        var people = new List<Person> { new Person { Name = "Fred" } };
        BindingSource bs = new BindingSource();
        bs.DataSource = people;

        Application.Run(new Form { Controls = { new DataGridView {
            Dock = DockStyle.Fill, DataSource = bs } } });
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文