robert 发表于 2015-12-24 15:21:00

》 EditingControl的KeyDown事件里面如何调用MultiRow的Keydown事件。

    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);
      }
    }

robert 发表于 2015-12-24 15:28:00

》 现在倒是可以在ShortcutKeyManager里面通过自定义Action来实现调用。但是自定义单元格如何实现调用现在还没有方向。
这个问题没有看懂,能否把具体的用例说一下?

sxyweiren 发表于 2015-12-25 14:45:00

回复 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);
      }
    }
}

sxyweiren 发表于 2015-12-25 14:47:00

回复 11楼robert的帖子

谢谢,,有这些代码我就可以把自定义的EditingControl和自定义的单元格类型关联起来了。。

sxyweiren 发表于 2015-12-25 14:50:00

回复 0楼sxyweiren的帖子

但是自定义的ShortCutKey稍微有点局限性。

类似于左右方向键,如果处于编辑状态的场合,按下左右键光标的移动需要自己写。。稍微有点麻烦。

robert 发表于 2015-12-25 15:50:00

恩,确实很多定制逻辑要自己写

robert 发表于 2015-12-25 15:50:00

回复 13楼sxyweiren的帖子

你写的代码是正解

sxyweiren 发表于 2015-12-28 14:35:00

回复 17楼robert的帖子

恩,谢谢了。。

幸亏有你的代码,要不然EditingControl的自定义有可能就实现不了了。

robert 发表于 2015-12-28 15:49:00

能解决问题就好
页: 1 [2]
查看完整版本: 关于MultiRow的自定义单元格的问题