winform程序以下是部分代码dgvBigType.Columns["cellselect"].DisplayIndex = 0;
dgvBigType.Columns["OrderNo"].DisplayIndex = 1;
dgvBigType.Columns["BigTypeName"].DisplayIndex = 2;
dgvBigType.Columns["ConnectionID"].DisplayIndex = 3;
dgvBigType.Columns["cellUp"].DisplayIndex = 4;
dgvBigType.Columns["cellDown"].DisplayIndex = 5;
dgvBigType.Columns["cellNoConnection"].DisplayIndex = 6;
dgvBigType.Columns["cellDel"].DisplayIndex = 7;其中0、4、5、6、7是在设计页面加上的,1、2、3是取自数据库
但是我在CellContentClick事件里取e.ColumnIndex的时候,是与上面的序号不一样的这是为什么啊?
请各位多多指教!

解决方案 »

  1.   

    e.ColumnIndex是取列的绝对索引dgvBigType.Columns[""].Index 
    DisplayIndex是显示列的顺序,如果有列隐藏了,会变
      

  2.   

    这个问题在于你的 Designer.cs 里
    如this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
                this.Column1,
                this.Column2,
                this.Column3,
                this.Column4});碰到过在设计器里位置正常 运行起来不乱的.根据你的需要修改这行代码.
      

  3.   

    DataGridVeiw应该是按照你绑定的时候的数据排列吧,你可以手动在属性里设置一下看看是不是还是乱的!
      

  4.   

    一样的话就不用搞两个属性了... 用  dgvBigType.Columns[e.ColumnIndex].DisplayIndex 取你赋的值