作成日: 2025/07/17 最終更新日: 2025/08/27
文書種別
不具合
状況
修正済み
詳細
SPREADデザイナの入力マップエディタにおいて、セルやコントロールがフォーカスされているときにキー入力が処理される状態(WhenFocused)に対して[Tab]キーおよび[Shift]+[Tab]キーにNoneアクションを設定すると、意図せず、フォーカスが子要素にある場合でも親要素としてキー入力を処理する状態(WhenAncestorOfFocused)にも同様の設定が反映され、フォーカス移動が正しく動作しない場合があります。
なお、本現象はコードによって入力マップを設定した場合には発生しません。
回避方法
Service Pack 3(v17.0.4804.2022/v17.3.0)で修正済み。
Service Pack 3を適用せずに対処する方法としては、フォームの Load イベント内で、[Tab]キーおよび[Shift]+[Tab]キーに対する WhenAncestorOfFocused 状態の入力マップを削除する方法が考えられます。
■サンプルコード(VB)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
...
// 回避策
For Each spread As FpSpread In spreads
Dim inputMap = spread.GetInputMap(InputMapMode.WhenAncestorOfFocused, OperationMode.Normal)
Dim tabKey = New Keystroke(Keys.Tab, Keys.None)
Dim shiftTabKey = New Keystroke(Keys.Tab, Keys.Shift)
If (Array.IndexOf(inputMap.Keys(), tabKey)) Then
If (inputMap.Get(tabKey) = SpreadActions.None) Then
inputMap.Remove(tabKey)
End If
End If
If Array.IndexOf(inputMap.Keys(), shiftTabKey) Then
If (inputMap.Get(shiftTabKey) = SpreadActions.None) Then
inputMap.Remove(shiftTabKey)
End If
End If
Next
End Sub