先頭行または最終行のInputManCellで上下矢印キーを押すとフォーカスが先頭または末尾のセルに移動してしまう場合がある

文書番号 : 39505     文書種別 : 不具合     登録日 : 2016/07/19     最終更新日 : 2016/11/25
文書を印刷する
対象製品
MultiRow for Windows Forms 8.0J
状況
修正済み
詳細
GcDateTimeCell/GcTimeSpanCell/GcNumberCell型セルが編集状態で、フォーカスが編集用コントロールの先頭の入力フィールドにある場合に上矢印キーを押すと、行の先頭のセルにフォーカスが移動します。また、最終行にあるセルではフォーカスが編集用コントロールの末尾の入力フィールドにある状態で下矢印キーを押すと、フォーカスが行の末尾のセルに移動します。
この現象は、セルのプロパティが次のように設定されている場合に発生します。

・ExitOnArrowKeysプロパティが"True"
・Spin.SpinOnKeysプロパティが"False"
回避方法
この問題はService Pack 2(v8.0.2016.1125)で修正されました。
不具合を修正した最新のサービスパックは、アップデートページ からダウンロードできます。

Service Pack 2より前のバージョンでは次の方法で回避可能です。

対象のInputManCellを継承したユーザー定義セル型を作成し、下記のようなコードを実装することで回避できます。サンプルコードでは、GcDateTimeCellを例としています。

[Sample]
  public class MyGcDateTimeCell :GcDateTimeCell
  {
    public override Type EditType
    {
      get
      {
        return typeof(MyGcDateTimeCellEditingControl);
      }
    }
  }
  public class MyGcDateTimeCellEditingControl : GcDateTimeEditingControl
  {
    protected override void MoveFocusByKeyExit(GrapeCity.Win.Editors.KeyExitEventArgs e)
    {
      if(e.Key == GrapeCity.Win.Editors.ExitKeys.CtrlRight)
      {
        e = new GrapeCity.Win.Editors.KeyExitEventArgs(GrapeCity.Win.Editors.ExitKeys.Right);
      }
      if(e.Key == GrapeCity.Win.Editors.ExitKeys.CtrlLeft)
      {
        e = new GrapeCity.Win.Editors.KeyExitEventArgs(GrapeCity.Win.Editors.ExitKeys.Left);
      }
      base.MoveFocusByKeyExit(e);
    }
  }
キーワード
MLTR20005