GcNumber的动作确认。
版本:MultiRow For WinForms 7.0J需求:按Up和Down键的时候(EditOnEnter,总是处于编辑状态的),将活动单元格移动到上一行或下一行的同一列,并将单元格的内容全部选中。
我的方法:
首先在EditingControlShowing事件中绑定EditingControl的KeyDown事件,然后判断,如果是Up或Down,就使用MoveUp.Excute(obj...)或MoveDown.Excute(obj...)的移动。因为HightlightText已经设置为True了,所以按道理说移动之后应该处于全选状态,但是没有。
UP之后的效果是:移动成功,但是光标位于最左端。
Down之后的效果是:移动成功,但是光标位于最右端。
猜测:
我调试发现,单元格移动成功之后,在当前活动单元格的CellFormatting中,突然SelectionLength就变为0了。前面都是好好的。也就是实际执行的动作是先全选了,然后又取消全选并将光标至于开始或最后。
我猜测是不是GcNumberEditingControl对于Up和Down是不是有什么默认动作。
基于以上猜测,我试图在KeyDown中,通过Handled=ture的方式来处理,但是没有效果,还是移动了光标。
(我尝试其他类型的Cell,Handled=ture是可以不让Up和Down有动作的,唯独GcNumber不好使)
PS:GcNumber也有ShortCutKey,但是貌似没有提供自定义的借口?能够自定义动作吗?可以像这个方向努力?
暂时无解,总不能自定义Cell吧!!
先求教版主了!!!!! 回复 1楼yinzhm的帖子
问题我们已经收到,测试下给你个反馈。 回复 2楼Alice的帖子
在ProcessCmdKey中将Up和Down吃掉是可以的,但这不是什么好方法…………
Protected Overrides Function ProcessCmdKey(ByRef msg As Message, keyData As Keys) As Boolean
If Me.ActiveControl IsNot Nothing AndAlso TypeOf Me.ActiveControl Is GrapeCity.Win.MultiRow.InputMan.GcNumberEditingControl Then
If keyData = Keys.Up Then
If GrapeCity.Win.MultiRow.SelectionActions.MoveUp.CanExecute(Me.dpvLine) Then
GrapeCity.Win.MultiRow.SelectionActions.MoveUp.Execute(Me.dpvLine)
End If
Return True
ElseIf keyData = Keys.Down Then
If GrapeCity.Win.MultiRow.SelectionActions.MoveDown.CanExecute(Me.dpvLine) Then
GrapeCity.Win.MultiRow.SelectionActions.MoveDown.Execute(Me.dpvLine)
End If
Return True
Else
Return MyBase.ProcessCmdKey(msg, keyData)
End If
Else
Return MyBase.ProcessCmdKey(msg, keyData)
End If
End Function 回复 3楼yinzhm的帖子
嗯。这个问题提交产品组做验证,如果有好的解决方案会给你个反馈。 回复 3楼yinzhm的帖子
你好,经过和产品组的沟通和确认,得到的建议如下:
1.为了让Cell总是处于编辑状态,需要:
this.gcMultiRow1.EditMode = GrapeCity.Win.MultiRow.EditMode.EditOnEnter;
2.为了让GcNumberCell(或者其他Cell)进入编辑状态的时候全选,需要:
cell.HighlightText = true;
3.为了让GcNumberCell不处理Up、Down键,需要:
cell.Spin.SpinOnKeys = false;
cell.ExitOnArrowKey = true;
如果能够满足你的需求,就绕过ProcessCmdKey或者EditingControlShowing等方法处理。
---------------------------------------------------------------
如果依然有问题,请提出来让我知道。
如果以上方案能够满足您的需求,您也可以反馈给我。
这个问题在之前的沟通和处理上有什么偏差和问题,也可以反映给我。
页:
[1]