[ETMR05743]ユーザー定義型セルで特定のショートカットキーが動作しない

文書番号 : 22592     文書種別 : 制限事項     最終更新日 : 2006/09/22
文書を印刷する
対象製品
El Tabelle MultiRow 4.0J
発生環境
動作保証環境と同じ
詳細
シートにショートカットキーを定義したとき、ユーザー定義型セルの編集中に特定のショートカットキーが動作しません。たとえば、Enter キーに「次のセルへ移動」する処理を割り当てたとき、既存のセル型では正しく動作しますが、ユーザー定義型セルでは動作しません。

このような現象は、次のキーをショートカットキーとして指定している場合に確認できます。

・Enter
・Esc
・Tab
・Tab + Shift
・PageUp
・PageDown
・PageUp + Ctrl
・PageDown + Ctrl
・↑(Up) + Ctrl
・↓(Down) + Ctrl
・→(Right) + Ctrl
・←(Left) + Ctrl

以下は現象を再現するためのサンプルコードです。

[Visual Basic]
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  'Enterキーに次のセルへの移動を割り当てる
  Dim keyActions(0) As GrapeCity.Win.ElTabelle.MKeyAction
  keyActions(0) = GrapeCity.Win.ElTabelle.MKeyAction.NextTabOrderOverMRow
  Dim shortcutEnter As GrapeCity.Win.ElTabelle.MShortcut = New GrapeCity.Win.ElTabelle.MShortcut(Keys.Enter, keyActions)
  AddHandler shortcutEnter.ShortcutNotify, New GrapeCity.Win.ElTabelle.MShortcutNotifyEventHandler(AddressOf shortcutEnter_ShortcutNotify)
  MultiRowSheet1.Shortcuts.Add(shortcutEnter)

  '常時入力モードに設定する
  MultiRowSheet1.EditType = GrapeCity.Win.ElTabelle.EditType.AlwaysEdit

  'ユーザー定義型セルを設定する
  MultiRowSheet1(0, 0, 0).Editor = New CustomNumber()
End Sub

Private Sub shortcutEnter_ShortcutNotify(ByVal sender As System.Object, ByVal e As GrapeCity.Win.ElTabelle.MShortcutNotifyEventArgs)
  'ユーザー定義型セルで Enter キーを押した場合のみ、ショートカットキーが動作せずイベントも発生しない
  Console.WriteLine("shortcutEnter_ShortcutNotify")
End Sub

[C#]
private void Form1_Load(object sender, EventArgs e)
{
  //Enterキーに次のセルへの移動を割り当てる
  GrapeCity.Win.ElTabelle.MKeyAction[] keyActions = new GrapeCity.Win.ElTabelle.MKeyAction[1];
  keyActions[0] = GrapeCity.Win.ElTabelle.MKeyAction.NextTabOrderOverMRow;
  GrapeCity.Win.ElTabelle.MShortcut shortcutEnter = new GrapeCity.Win.ElTabelle.MShortcut(Keys.Enter, keyActions);
  shortcutEnter.ShortcutNotify += new GrapeCity.Win.ElTabelle.MShortcutNotifyEventHandler(shortcutEnter_ShortcutNotify);
  multiRowSheet1.Shortcuts.Add(shortcutEnter);

  //常時入力モードに設定する
  multiRowSheet1.EditType = GrapeCity.Win.ElTabelle.EditType.AlwaysEdit;

  //ユーザー定義型セルを設定する
  multiRowSheet1[0, 0, 0].Editor = new CustomNumber();
}

private void shortcutEnter_ShortcutNotify(object sender, GrapeCity.Win.ElTabelle.MShortcutNotifyEventArgs e)
{
  //ユーザー定義型セルで Enter キーを押した場合のみ、ショートカットキーが動作せずイベントも発生しない
  Console.WriteLine("shortcutEnter_ShortcutNotify");
}

※ CustomNumber クラスは、ヘルプファイル「ユーザー定義型セルの作成」からコピーします。
回避方法
この現象は、製品の制限によるものです。

ユーザー定義型セルでショートカットキーを直接処理することで現象を回避できます。サンプルコードは こちら よりダウンロードできます。

この文書は、以前は次のFAQ IDで公開されていました : 6400