C# 如何确定绑定到数据源的datagridview中显示列的顺序

C# 如何确定绑定到数据源的datagridview中显示列的顺序,c#,winforms,data-binding,.net-2.0,C#,Winforms,Data Binding,.net 2.0,是否有方法确定中显示的列的顺序 将datagridview绑定到包含 基础IList? 我认为有一个特定的属性用于此目的 但我想不起它到底是什么 例如: 编辑: 我想补充一点,我不想手动将列添加到设计器中的列列表中。我希望尽可能保持动态。在DataGridView中指定实际的列列表,而不是允许它自动数据绑定。通过选择控件并添加列,可以在VisualStudio的“设计”视图中执行此操作。确保在每列中指定它应绑定到的属性。然后,您可以按照任何方式重新排列列,也可以进行其他自定义 我认为Displa

是否有方法确定中显示的列的顺序 将datagridview绑定到包含 基础IList? 我认为有一个特定的属性用于此目的 但我想不起它到底是什么

例如:

编辑:
我想补充一点,我不想手动将列添加到设计器中的列列表中。我希望尽可能保持动态。

DataGridView
中指定实际的列列表,而不是允许它自动数据绑定。通过选择控件并添加列,可以在VisualStudio的“设计”视图中执行此操作。确保在每列中指定它应绑定到的属性。然后,您可以按照任何方式重新排列列,也可以进行其他自定义


我认为
DisplayOrder
属性相对较新,可能在
DataGridView
控件中不受支持。

DataGridView中列的显示顺序由
DataGridViewColumn
-s的
DisplayIndex
属性决定。您必须在网格的列上设置这些属性,才能更改它们的顺序


我也同意Eilon的回答:您可以自己创建列列表,而不是自动数据绑定,这样您就可以确定列的显示顺序。

列顺序并不总是有效的。您需要关闭AutoColumnCreate来修复不一致:


我不确定这是否是.Net提供的功能,但如果您只是更改类中属性的顺序,网格将以相同的顺序呈现列

下面两个类将按照它们在类中键入的顺序呈现。奇怪

class CustomClass
{
    public bool Selected {get;set;}
    public string Name{get;set;}
}

class CustomClass
{
    public string Name{get;set;}       
    public bool Selected {get;set;}
}

如果您尝试设置
DisplayIndex
,请确保在设置
DataGridView
数据源后设置它。
class CustomClass
{
        bool _selected = false;
        //[DisplayOrder(0)]
        public bool Selected
        {
            get { return _selected; }
            set { _selected = value; }
        }

        string _name;
         //[DisplayOrder(2)]
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }

        string _value;
         //[DisplayOrder(1)]
        public string Value
        {
            get { return _value; }
            set { _value = value; }
        }
}
class CustomClass
{
    public bool Selected {get;set;}
    public string Name{get;set;}
}

class CustomClass
{
    public string Name{get;set;}       
    public bool Selected {get;set;}
}