public class MyGcTextBoxCellType : GcTextBoxCell
{
public override Type EditType
{
get
{
return typeof(MyGcTextBoxEditingControl);
}
}
}
public class MyGcTextBoxEditingControl : GcTextBoxEditingControl
{
protected override void OnKeyDown(KeyEventArgs e)
{
base.OnKeyDown(e);
(this.GcMultiRow as MyGcMultiRow).EditorKeyDown(e);
}
}
public class MyGcMultiRow : GcMultiRow
{
public void EditorKeyDown(KeyEventArgs e)
{
this.OnKeyDown(e);
}
} 》 现在倒是可以在ShortcutKeyManager里面通过自定义Action来实现调用。但是自定义单元格如何实现调用现在还没有方向。
这个问题没有看懂,能否把具体的用例说一下? 回复 12楼robert的帖子
就是通过下面的代码,直接把Mr的快捷键注册了.这样回车键和Tab键相关的按键在编辑状态下就可以触发了.
不过回车键之类的动作要用代码完成.
void Form1_Load(object sender, EventArgs e)
{
gcMultiRow1.Template = Template.Default;
gcMultiRow1.RowCount = 5;
// Register another action to a existent key. Unregister old key first.
this.gcMultiRow1.ShortcutKeyManager.Unregister(Keys.Enter);
// Register to new action.
this.gcMultiRow1.ShortcutKeyManager.Register(new EditThenMoveNextAction(), Keys.Enter);
// Register an action list. Select all first, and then, copy.
this.gcMultiRow1.ShortcutKeyManager.Register(new ActionList(SelectionActions.SelectAll, EditingActions.Copy), Keys.Control | Keys.Shift | Keys.C);
}
class EditThenMoveNextAction : Action
{
public override bool CanExecute(GcMultiRow target)
{
return true;
}
protected override void OnExecute(GcMultiRow target)
{
if (target.IsCurrentCellInEditMode == false && EditingActions.BeginEdit.CanExecute(target))
{
EditingActions.BeginEdit.Execute(target);
}
else
{
SelectionActions.MoveToNextCell.Execute(target);
}
}
} 回复 11楼robert的帖子
谢谢,,有这些代码我就可以把自定义的EditingControl和自定义的单元格类型关联起来了。。 回复 0楼sxyweiren的帖子
但是自定义的ShortCutKey稍微有点局限性。
类似于左右方向键,如果处于编辑状态的场合,按下左右键光标的移动需要自己写。。稍微有点麻烦。 恩,确实很多定制逻辑要自己写 回复 13楼sxyweiren的帖子
你写的代码是正解 回复 17楼robert的帖子
恩,谢谢了。。
幸亏有你的代码,要不然EditingControl的自定义有可能就实现不了了。 能解决问题就好
页:
1
[2]