编辑器vs2005测试程序:
winform程序界面上已经存在一个DataGridView控件dataGridView1        public Form1()
        {
            InitializeComponent();
            dataGridView1.DataSource = CreateTestTable();
            SetColumnsOrder(dataGridView1);
        }        private void SetColumnsOrder(DataGridView dgv)
        {
            dataGridView1.Columns["AccountID"].DisplayIndex = 0;
            dataGridView1.Columns["RelationItemTypeID"].DisplayIndex = 1;
            dataGridView1.Columns["RelationItemID"].DisplayIndex = 2;
            dataGridView1.Columns["OperationDate"].DisplayIndex = 3;
            dataGridView1.Columns["CreateDate"].DisplayIndex = 4;
            dataGridView1.Columns["OperationValue"].DisplayIndex = 5;
            dataGridView1.Columns["Re"].DisplayIndex = 6;
            dataGridView1.Columns["LastChangeTime"].DisplayIndex = 7;
            dataGridView1.Columns["ID"].DisplayIndex = 8;
            dataGridView1.Columns["BusinessTableCode"].DisplayIndex = 9;
        }        //这是测试
        private DataTable CreateTestTable()
        {
            DataTable dt = new DataTable();
            DataColumn colID = new DataColumn("ID");
            DataColumn colOperationValue = new DataColumn("OperationValue");
            DataColumn colOperationDate = new DataColumn("OperationDate");
            DataColumn colCreateDate = new DataColumn("CreateDate");
            DataColumn colLastChangeTime = new DataColumn("LastChangeTime");
            DataColumn colRe = new DataColumn("Re");
            DataColumn colBusinessTableCode = new DataColumn("BusinessTableCode");
            DataColumn colRelationItemTypeID = new DataColumn("RelationItemTypeID");
            DataColumn colRelationItemID = new DataColumn("RelationItemID");
            DataColumn colAccountID = new DataColumn("AccountID");
            dt.Columns.AddRange(new DataColumn[] { colID, colOperationValue, colOperationDate, colCreateDate, colLastChangeTime
                ,  colRe,colBusinessTableCode,colRelationItemTypeID,colRelationItemID,colAccountID});            return dt;
        }在构造函数Form1()中设置DataGridView的显示列顺序时,显示的顺序与DisplayIndex属性设置的不一致。
希望的顺序:
AccountID
RelationItemTypeID
RelationItemID
OperationDate
CreateDate
OperationValue
Re
LastChangeTime
ID
BusinessTableCode而实际显示的顺序为:
AccountID
ID
RelationItemTypeID
RelationItemID
OperationValue
OperationDate
CreateDate
LastChangeTime
Re
BusinessTableCode不信在你的机器上试试。
如果把
            dataGridView1.DataSource = CreateTestTable();
            SetColumnsOrder(dataGridView1);
写到Form_Load()中或按扭事件中显示的顺序正确。请高手帮忙分析分析,谢谢。

解决方案 »

  1.   

    不要在构造函数中做,这是可能dataGridView1还没有完全加载
      

  2.   

    dataGridView2.DataSource = CreateTestTable();
                SetColumnsOrder(dataGridView2);放到form_Load中就ok了
      

  3.   

    谢谢以上回复dataGridView1是控件自动生成的当然是在
     InitializeComponent();中被初始了的写到Form_Load()中或按扭事件中显示的顺序正确。
    jiatong1981(末日之痕)说的正确
    我问的是什么放在构造函数中会不一样呢?
    bug???
      

  4.   

    CathySun118(斯年) 
    没有完全加载??