[ETSH05743]ユーザー定義型セルで特定のショートカットキーが動作しない
対象製品
El Tabelle Sheet 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.KeyAction
keyActions(0) = GrapeCity.Win.ElTabelle.KeyAction.NextCellWithWrap
Dim shortcutEnter As GrapeCity.Win.ElTabelle.ShortCut = New GrapeCity.Win.ElTabelle.ShortCut(Keys.Enter, keyActions)
AddHandler shortcutEnter.ShortCutNotify, New GrapeCity.Win.ElTabelle.ShortCutNotifyHandler(AddressOf shortcutEnter_ShortcutNotify)
Sheet1.ShortCuts.Add(shortcutEnter)
'常時入力モードに設定する
Sheet1.EditType = GrapeCity.Win.ElTabelle.EditType.AlwaysEdit
'ユーザー定義型セルを設定する
Sheet1(0, 0).Editor = New CustomNumber()
End Sub
Private Sub shortcutEnter_ShortcutNotify(ByVal sender As System.Object, ByVal e As GrapeCity.Win.ElTabelle.ShortCutNotifyEventArgs)
'ユーザー定義型セルで Enter キーを押した場合のみ、ショートカットキーが動作せずイベントも発生しない
Console.WriteLine("shortcutEnter_ShortcutNotify")
End Sub
[C#]
private void Form1_Load(object sender, EventArgs e)
{
//Enterキーに次のセルへの移動を割り当てる
GrapeCity.Win.ElTabelle.KeyAction[] keyActions = new GrapeCity.Win.ElTabelle.KeyAction[1];
keyActions[0] = GrapeCity.Win.ElTabelle.KeyAction.NextCellWithWrap;
GrapeCity.Win.ElTabelle.ShortCut shortcutEnter = new GrapeCity.Win.ElTabelle.ShortCut(Keys.Enter, keyActions);
shortcutEnter.ShortCutNotify += new GrapeCity.Win.ElTabelle.ShortCutNotifyHandler(shortcutEnter_ShortcutNotify);
sheet1.ShortCuts.Add(shortcutEnter);
//常時入力モードに設定する
sheet1.EditType = GrapeCity.Win.ElTabelle.EditType.AlwaysEdit;
//ユーザー定義型セルを設定する
sheet1[0, 0].Editor = new CustomNumber();
}
private void shortcutEnter_ShortcutNotify(object sender, GrapeCity.Win.ElTabelle.ShortCutNotifyEventArgs e)
{
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.KeyAction
keyActions(0) = GrapeCity.Win.ElTabelle.KeyAction.NextCellWithWrap
Dim shortcutEnter As GrapeCity.Win.ElTabelle.ShortCut = New GrapeCity.Win.ElTabelle.ShortCut(Keys.Enter, keyActions)
AddHandler shortcutEnter.ShortCutNotify, New GrapeCity.Win.ElTabelle.ShortCutNotifyHandler(AddressOf shortcutEnter_ShortcutNotify)
Sheet1.ShortCuts.Add(shortcutEnter)
'常時入力モードに設定する
Sheet1.EditType = GrapeCity.Win.ElTabelle.EditType.AlwaysEdit
'ユーザー定義型セルを設定する
Sheet1(0, 0).Editor = New CustomNumber()
End Sub
Private Sub shortcutEnter_ShortcutNotify(ByVal sender As System.Object, ByVal e As GrapeCity.Win.ElTabelle.ShortCutNotifyEventArgs)
'ユーザー定義型セルで Enter キーを押した場合のみ、ショートカットキーが動作せずイベントも発生しない
Console.WriteLine("shortcutEnter_ShortcutNotify")
End Sub
[C#]
private void Form1_Load(object sender, EventArgs e)
{
//Enterキーに次のセルへの移動を割り当てる
GrapeCity.Win.ElTabelle.KeyAction[] keyActions = new GrapeCity.Win.ElTabelle.KeyAction[1];
keyActions[0] = GrapeCity.Win.ElTabelle.KeyAction.NextCellWithWrap;
GrapeCity.Win.ElTabelle.ShortCut shortcutEnter = new GrapeCity.Win.ElTabelle.ShortCut(Keys.Enter, keyActions);
shortcutEnter.ShortCutNotify += new GrapeCity.Win.ElTabelle.ShortCutNotifyHandler(shortcutEnter_ShortcutNotify);
sheet1.ShortCuts.Add(shortcutEnter);
//常時入力モードに設定する
sheet1.EditType = GrapeCity.Win.ElTabelle.EditType.AlwaysEdit;
//ユーザー定義型セルを設定する
sheet1[0, 0].Editor = new CustomNumber();
}
private void shortcutEnter_ShortcutNotify(object sender, GrapeCity.Win.ElTabelle.ShortCutNotifyEventArgs e)
{
Console.WriteLine("shortcutEnter_ShortcutNotify");
}
※ CustomNumber クラスは、ヘルプファイル「ユーザー定義型セルの作成」からコピーします。
回避方法
この文書は、以前は次のFAQ IDで公開されていました : 6402