现在要实现,ABC3列是固定顺序的。DEFG4列是可以通过鼠标来拖动列到新的位置。
例如拖动A到B和C之间是不可以的。也就是表的左边是固定的ABC列,剩下的可以随意拖动。
DEFG可以通过鼠标拖动列标题为EDFG.
7 个解决方案
#1
补充一下:
不是在程序中用DISPLAYINDEX设定,
而是用鼠标来拖动。
不是在程序中用DISPLAYINDEX设定,
而是用鼠标来拖动。
#2
将前三个列的冻结属性设为true不久可以了么?
v2005用得不多,只是用过该冻结属性
v2005用得不多,只是用过该冻结属性
#3
DataGridViewColumn OneColumn = new DataGridViewColumn();
OneColumn.DisplayIndex = ColInfo.DisplayIndex;
OneColumn.Frozen = ColInfo.Frozen;
我试过了,用冻结的方法,可以使得在拖动滚动条的时候,这ABC3列始终显示出来。
但是,ABC还是可以互相拖动,DEFG可以互相拖动,并且ABC不能拖到CDEF中。
但不是我想要的。我要的是ABC是固定在左边的3列,顺序不能变。DEFG次序可以变。
OneColumn.DisplayIndex = ColInfo.DisplayIndex;
OneColumn.Frozen = ColInfo.Frozen;
我试过了,用冻结的方法,可以使得在拖动滚动条的时候,这ABC3列始终显示出来。
但是,ABC还是可以互相拖动,DEFG可以互相拖动,并且ABC不能拖到CDEF中。
但不是我想要的。我要的是ABC是固定在左边的3列,顺序不能变。DEFG次序可以变。
#4
那就用两个DataGrid并列来显示...
#5
这样的话,用滚动条来滚动时不太好看了,并且对列数据排序后,显示都比较麻烦。
如果这个控件真的没有这个属性,我只能想其他办法了。
谢各位了。
DELPHI中有列控件可以固定列,不能移动,这个控件没有,太失望了。
如果这个控件真的没有这个属性,我只能想其他办法了。
谢各位了。
DELPHI中有列控件可以固定列,不能移动,这个控件没有,太失望了。
#6
你可以尝试在datagridview的mousedown事件里用HitTest(e.X,e.Y)检查鼠标按下的位置,判断如果在A,B,C三个列的列头,那么:
设定datagridview的AllowDrop属性为false,否则为true
或者通过别的方式控制拖拽事件
设定datagridview的AllowDrop属性为false,否则为true
或者通过别的方式控制拖拽事件
#7
自己解决了,公布一下.
其中有一个属性AllowUserToOrderColumns,是否允许用户拖动列.
当鼠标按下时,判断是否在ABC3列的位置内时设置为false.
其中有一个属性AllowUserToOrderColumns,是否允许用户拖动列.
当鼠标按下时,判断是否在ABC3列的位置内时设置为false.
#1
补充一下:
不是在程序中用DISPLAYINDEX设定,
而是用鼠标来拖动。
不是在程序中用DISPLAYINDEX设定,
而是用鼠标来拖动。
#2
将前三个列的冻结属性设为true不久可以了么?
v2005用得不多,只是用过该冻结属性
v2005用得不多,只是用过该冻结属性
#3
DataGridViewColumn OneColumn = new DataGridViewColumn();
OneColumn.DisplayIndex = ColInfo.DisplayIndex;
OneColumn.Frozen = ColInfo.Frozen;
我试过了,用冻结的方法,可以使得在拖动滚动条的时候,这ABC3列始终显示出来。
但是,ABC还是可以互相拖动,DEFG可以互相拖动,并且ABC不能拖到CDEF中。
但不是我想要的。我要的是ABC是固定在左边的3列,顺序不能变。DEFG次序可以变。
OneColumn.DisplayIndex = ColInfo.DisplayIndex;
OneColumn.Frozen = ColInfo.Frozen;
我试过了,用冻结的方法,可以使得在拖动滚动条的时候,这ABC3列始终显示出来。
但是,ABC还是可以互相拖动,DEFG可以互相拖动,并且ABC不能拖到CDEF中。
但不是我想要的。我要的是ABC是固定在左边的3列,顺序不能变。DEFG次序可以变。
#4
那就用两个DataGrid并列来显示...
#5
这样的话,用滚动条来滚动时不太好看了,并且对列数据排序后,显示都比较麻烦。
如果这个控件真的没有这个属性,我只能想其他办法了。
谢各位了。
DELPHI中有列控件可以固定列,不能移动,这个控件没有,太失望了。
如果这个控件真的没有这个属性,我只能想其他办法了。
谢各位了。
DELPHI中有列控件可以固定列,不能移动,这个控件没有,太失望了。
#6
你可以尝试在datagridview的mousedown事件里用HitTest(e.X,e.Y)检查鼠标按下的位置,判断如果在A,B,C三个列的列头,那么:
设定datagridview的AllowDrop属性为false,否则为true
或者通过别的方式控制拖拽事件
设定datagridview的AllowDrop属性为false,否则为true
或者通过别的方式控制拖拽事件
#7
自己解决了,公布一下.
其中有一个属性AllowUserToOrderColumns,是否允许用户拖动列.
当鼠标按下时,判断是否在ABC3列的位置内时设置为false.
其中有一个属性AllowUserToOrderColumns,是否允许用户拖动列.
当鼠标按下时,判断是否在ABC3列的位置内时设置为false.