[ETMR05743]ユーザー定義型セルで特定のショートカットキーが動作しない
対象製品
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 クラスは、ヘルプファイル「ユーザー定義型セルの作成」からコピーします。
このような現象は、次のキーをショートカットキーとして指定している場合に確認できます。
・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