拡張コンボボックス型セルで、キー入力に対応したアイテムの選択が行われない
対象製品
El Tabelle for .NET 2.0J
発生環境
すべてのアセンブリ
状況
修正済み
詳細
・Sheet.EditMode プロパティを AlwaysEdit に設定する
・Sheet.ExitOnArrows プロパティを True に設定する
・SuperiorComboEditor.Editable プロパティを False に設定する
上記内容により、拡張コンボボックス型セルの編集で入力したキーを元にリストのアイテムが選択される動作が正常に動きません。コンボボックス型セルの場合は押下したキーを元にアイテムの選択が行われます。
・Sheet.ExitOnArrows プロパティを True に設定する
・SuperiorComboEditor.Editable プロパティを False に設定する
上記内容により、拡張コンボボックス型セルの編集で入力したキーを元にリストのアイテムが選択される動作が正常に動きません。コンボボックス型セルの場合は押下したキーを元にアイテムの選択が行われます。
回避方法
この現象はファイル バージョン v2.0.2006.0126 以降のアセンブリで修正されています。
修正版は こちら からダウンロードできます。
また、次の操作を行うことで現象を回避できます。回避方法は2種類あります。
1.次のようにコーディングすることで回避します。
[Visual Basic]
Private Sub Sheet1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Sheet1.KeyPress
If TypeOf Sheet1.ActiveCell.Editor Is GrapeCity.Win.ElTabelle.Editors.SuperiorComboEditor Then
Dim objSpComboEditor As GrapeCity.Win.ElTabelle.Editors.SuperiorComboEditor = _
CType(Sheet1.ActiveCell.Editor, GrapeCity.Win.ElTabelle.Editors.SuperiorComboEditor)
Dim intFindResult As Integer
'入力された文字から始まる最初のアイテムのインデックスを取得する
intFindResult = objSpComboEditor.FindString(e.KeyChar.ToString(), GrapeCity.Win.ElTabelle.TargetMember.DisplayMember)
'該当するアイテムが存在する場合、選択する
If intFindResult > -1 Then
Sheet1.ActiveCell.Value = intFindResult
End If
Debug.WriteLine(intFindResult)
End If
End Sub
[C#]
private void Sheet1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if (sheet1.ActiveCell.Editor is GrapeCity.Win.ElTabelle.Editors.SuperiorComboEditor)
{
GrapeCity.Win.ElTabelle.Editors.SuperiorComboEditor objSpComboEditor = ((GrapeCity.Win.ElTabelle.Editors.SuperiorComboEditor)(sheet1.ActiveCell.Editor));
int intFindResult;
intFindResult = objSpComboEditor.FindString(e.KeyChar.ToString(), GrapeCity.Win.ElTabelle.TargetMember.DisplayMember) ;
if (intFindResult > -1)
{
sheet1.ActiveCell.Value = intFindResult;
}
System.Diagnostics.Debug.WriteLine(intFindResult);
}
}
2.次のように設定することで回避します。
・ExitOnArrows を False に設定する
・矢印キーにショートカットを設定する
・矢印でのセル移動ができるようにする
修正版は こちら からダウンロードできます。
また、次の操作を行うことで現象を回避できます。回避方法は2種類あります。
1.次のようにコーディングすることで回避します。
[Visual Basic]
Private Sub Sheet1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Sheet1.KeyPress
If TypeOf Sheet1.ActiveCell.Editor Is GrapeCity.Win.ElTabelle.Editors.SuperiorComboEditor Then
Dim objSpComboEditor As GrapeCity.Win.ElTabelle.Editors.SuperiorComboEditor = _
CType(Sheet1.ActiveCell.Editor, GrapeCity.Win.ElTabelle.Editors.SuperiorComboEditor)
Dim intFindResult As Integer
'入力された文字から始まる最初のアイテムのインデックスを取得する
intFindResult = objSpComboEditor.FindString(e.KeyChar.ToString(), GrapeCity.Win.ElTabelle.TargetMember.DisplayMember)
'該当するアイテムが存在する場合、選択する
If intFindResult > -1 Then
Sheet1.ActiveCell.Value = intFindResult
End If
Debug.WriteLine(intFindResult)
End If
End Sub
[C#]
private void Sheet1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if (sheet1.ActiveCell.Editor is GrapeCity.Win.ElTabelle.Editors.SuperiorComboEditor)
{
GrapeCity.Win.ElTabelle.Editors.SuperiorComboEditor objSpComboEditor = ((GrapeCity.Win.ElTabelle.Editors.SuperiorComboEditor)(sheet1.ActiveCell.Editor));
int intFindResult;
intFindResult = objSpComboEditor.FindString(e.KeyChar.ToString(), GrapeCity.Win.ElTabelle.TargetMember.DisplayMember) ;
if (intFindResult > -1)
{
sheet1.ActiveCell.Value = intFindResult;
}
System.Diagnostics.Debug.WriteLine(intFindResult);
}
}
2.次のように設定することで回避します。
・ExitOnArrows を False に設定する
・矢印キーにショートカットを設定する
・矢印でのセル移動ができるようにする
キーワード
ELTB04960
この文書は、以前は次のバグレポートIDで公開されていました : 5840