Winforms 按列向DataGridView添加数据

Winforms 按列向DataGridView添加数据,winforms,datagrid,datagridview,runtime,Winforms,Datagrid,Datagridview,Runtime,我想在数据网格视图中按列添加数据 我在运行时添加列,然后我想向其中添加数据 也可能是这些列自身调整大小以适应窗口 例如,如果有10列,则10列应填充窗口;如果有5列,则5列应填充窗口。以下是一个简单示例的代码,用于执行所需操作。它来自一个简单表单的代码,表单上有一个DataGridView控件 public partial class Form1 : Form { public Form1() { InitializeComponent();

我想在数据网格视图中按列添加数据

我在运行时添加列,然后我想向其中添加数据

也可能是这些列自身调整大小以适应窗口


例如,如果有10列,则10列应填充窗口;如果有5列,则5列应填充窗口。以下是一个简单示例的代码,用于执行所需操作。它来自一个简单表单的代码,表单上有一个DataGridView控件

public partial class Form1 : Form
{

    public Form1()
    {
        InitializeComponent();

        BindingList<BindingClass> data = new BindingList<BindingClass>() { 
            new BindingClass { Name = "joe", Surname = "bloggs" }, 
            new BindingClass { Name = "sue", Surname = "bloggs" } };
        dataGridView1.DataSource = data;
        dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
    }

}   

    public class BindingClass
    {
        public string Name { get; set; }
        public string Surname { get; set; }
    }

} 
公共部分类表单1:表单
{
公共表格1()
{
初始化组件();
BindingList数据=新建BindingList(){
新绑定类{Name=“joe”,姓氏=“bloggs”},
新绑定类{Name=“sue”,姓氏=“bloggs”};
dataGridView1.DataSource=数据;
dataGridView1.AutoSizeColumnsMode=DataGridViewAutoSizeColumnsMode.Fill;
}
}   
公共类绑定类
{
公共字符串名称{get;set;}
公共字符串姓氏{get;set;}
}
} 
我已经创建了一个自定义对象用于我的数据-这就是您的列表所在。绑定到DataGridView数据源的列表的所有公共属性都被创建为列,然后可以隐藏不需要的列

在我的示例中,我选择使用
绑定列表
而不是
列表
——这通常是首选,因为它提供编辑功能,并且可以扩展以支持排序

我还将网格的
AutoSizeColumnsMode
设置为
Fill
——还有几个其他选项,包括单独设置每列的宽度或填充属性,也可以通过设计器进行设置



我不建议使用
列表视图
,因为它不提供自动数据绑定。

下面是一个简单示例的代码,可以实现您想要的功能。它来自一个简单表单的代码,表单上有一个DataGridView控件

public partial class Form1 : Form
{

    public Form1()
    {
        InitializeComponent();

        BindingList<BindingClass> data = new BindingList<BindingClass>() { 
            new BindingClass { Name = "joe", Surname = "bloggs" }, 
            new BindingClass { Name = "sue", Surname = "bloggs" } };
        dataGridView1.DataSource = data;
        dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
    }

}   

    public class BindingClass
    {
        public string Name { get; set; }
        public string Surname { get; set; }
    }

} 
公共部分类表单1:表单
{
公共表格1()
{
初始化组件();
BindingList数据=新建BindingList(){
新绑定类{Name=“joe”,姓氏=“bloggs”},
新绑定类{Name=“sue”,姓氏=“bloggs”};
dataGridView1.DataSource=数据;
dataGridView1.AutoSizeColumnsMode=DataGridViewAutoSizeColumnsMode.Fill;
}
}   
公共类绑定类
{
公共字符串名称{get;set;}
公共字符串姓氏{get;set;}
}
} 
我已经创建了一个自定义对象用于我的数据-这就是您的列表所在。绑定到DataGridView数据源的列表的所有公共属性都被创建为列,然后可以隐藏不需要的列

在我的示例中,我选择使用
绑定列表
而不是
列表
——这通常是首选,因为它提供编辑功能,并且可以扩展以支持排序

我还将网格的
AutoSizeColumnsMode
设置为
Fill
——还有几个其他选项,包括单独设置每列的宽度或填充属性,也可以通过设计器进行设置



我不建议使用
列表视图,因为它不提供自动数据绑定。

添加新列时,网格中是否已经有数据?如果是这样,数据是如何到达的,网格是未绑定的还是绑定到数据源的,如果数据源是什么类型的?@DavidHall我在网格中没有任何数据。网格是空的。现在我必须向其中添加一列并向该列添加值。值位于List@DavidHall如果可以在ListView中完成,那么也没问题。我只需要显示数据…谢谢你,好的,所以你只有一个值列表(字符串?)您希望向用户显示,并且永远不会有其他列显示?您希望用户能够编辑数据吗?并且用户能够添加新项目。抱歉,这二十个问题,但是他们帮助您了解建议的正确控件和绑定方法。实际上,从关于缩放列的第二个问题开始,这听起来像您的列表中有时可能有多个项目?当您添加新列时,网格中是否已经有数据?如果有,数据是如何到达的,网格是否未绑定或绑定到数据源的,如果是数据源,则是什么类型?@DavidHall我在网格中没有任何数据。网格是空的。现在我必须向其中添加一列并添加v该列的值。这些值位于List@DavidHall如果可以在ListView中完成,那么也可以。我只需要显示数据…谢谢AdvanceAh ok,那么您只有一个值列表(字符串?)您希望向用户显示,并且永远不会有其他列显示?您希望用户能够编辑数据吗?并且用户能够添加新项目。抱歉,这二十个问题,但是他们帮助您了解建议的正确控件和绑定方法。实际上,从关于缩放列的第二个问题开始,这听起来像您的列表中有时可以有多个项目?