补充一下:
不是在程序中用DISPLAYINDEX设定,
而是用鼠标来拖动。

解决方案 »

  1.   

    将前三个列的冻结属性设为true不久可以了么?
    v2005用得不多,只是用过该冻结属性
      

  2.   

    DataGridViewColumn OneColumn = new DataGridViewColumn();
     OneColumn.DisplayIndex = ColInfo.DisplayIndex;
     OneColumn.Frozen = ColInfo.Frozen;我试过了,用冻结的方法,可以使得在拖动滚动条的时候,这ABC3列始终显示出来。
    但是,ABC还是可以互相拖动,DEFG可以互相拖动,并且ABC不能拖到CDEF中。但不是我想要的。我要的是ABC是固定在左边的3列,顺序不能变。DEFG次序可以变。
      

  3.   

    那就用两个DataGrid并列来显示...
      

  4.   

    这样的话,用滚动条来滚动时不太好看了,并且对列数据排序后,显示都比较麻烦。如果这个控件真的没有这个属性,我只能想其他办法了。谢各位了。DELPHI中有列控件可以固定列,不能移动,这个控件没有,太失望了。
      

  5.   

    你可以尝试在datagridview的mousedown事件里用HitTest(e.X,e.Y)检查鼠标按下的位置,判断如果在A,B,C三个列的列头,那么:
    设定datagridview的AllowDrop属性为false,否则为true
    或者通过别的方式控制拖拽事件
      

  6.   

    自己解决了,公布一下.其中有一个属性AllowUserToOrderColumns,是否允许用户拖动列.当鼠标按下时,判断是否在ABC3列的位置内时设置为false.