先頭行または最終行のInputManCellで上下矢印キーを押すとフォーカスが先頭または末尾のセルに移動してしまう場合がある
対象製品
MultiRow for Windows Forms 8.0J
状況
修正済み
詳細
GcDateTimeCell/GcTimeSpanCell/GcNumberCell型セルが編集状態で、フォーカスが編集用コントロールの先頭の入力フィールドにある場合に上矢印キーを押すと、行の先頭のセルにフォーカスが移動します。また、最終行にあるセルではフォーカスが編集用コントロールの末尾の入力フィールドにある状態で下矢印キーを押すと、フォーカスが行の末尾のセルに移動します。
この現象は、セルのプロパティが次のように設定されている場合に発生します。
・ExitOnArrowKeysプロパティが"True"
・Spin.SpinOnKeysプロパティが"False"
この現象は、セルのプロパティが次のように設定されている場合に発生します。
・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);
}
}
不具合を修正した最新のサービスパックは、アップデートページ からダウンロードできます。
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