作成日: 2019/03/04 最終更新日: 2019/04/17
文書種別
不具合
状況
修正済み
詳細
Tabキーの動作にMoveNextThenControlを設定した場合、SPREADの最後のセルにフォーカスがある状態でTabキーを押下すると、次のコントロールにフォーカスが移動します。
しかしながら、SPREADの最終行に編集状態のセルが含まれる場合は、次のコントロールにフォーカスが移動しません。
しかしながら、SPREADの最終行に編集状態のセルが含まれる場合は、次のコントロールにフォーカスが移動しません。
回避方法
Service Pack 3(v2.0.2019.0417)で修正済みです。
Service Pack 3(v2.0.2019.0417)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
行の編集を確定したあとMoveNextThenControlを実行するように処理を実装します。
以下のサンプルコードは、GcSpreadGridコントロールと標準のTextBoxコントロールを配置している場合の例です。
◎サンプルコード(C#)
Service Pack 3(v2.0.2019.0417)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
行の編集を確定したあとMoveNextThenControlを実行するように処理を実装します。
以下のサンプルコードは、GcSpreadGridコントロールと標準のTextBoxコントロールを配置している場合の例です。
◎サンプルコード(C#)
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
gcSpreadGrid1.RowCount = 1;
gcSpreadGrid1.ColumnCount = 3;
gcSpreadGrid1.Focus();
gcSpreadGrid1.BeginEdit();
gcSpreadGrid1.InputBindings.Add(new KeyBinding(new EndEditAndMoveNextThenControlCommand(gcSpreadGrid1), new KeyGesture(Key.Tab)));
}
}
internal class EndEditAndMoveNextThenControlCommand : ICommand
{
private readonly ICommand _moveNextThenControl;
private readonly SpreadCommand _commitRowEdit;
private readonly GcSpreadGrid _spreadGrid;
public EndEditAndMoveNextThenControlCommand(GcSpreadGrid spreadGrid)
{
_commitRowEdit = spreadGrid.EditCommands.CommitRowEdit;
_moveNextThenControl = spreadGrid.NavigationCommands.MoveNextThenControl;
_spreadGrid = spreadGrid;
}
public event EventHandler CanExecuteChanged
{
add
{
_moveNextThenControl.CanExecuteChanged += value;
}
remove
{
_moveNextThenControl.CanExecuteChanged -= value;
}
}
public bool CanExecute(object parameter)
{
return _moveNextThenControl.CanExecute(parameter);
}
public void Execute(object parameter)
{
if (_commitRowEdit.CanExecute(parameter))
{
var activeCellPos = _spreadGrid.ActiveCellPosition;
if (!activeCellPos.IsEmpty)
{
var row = _spreadGrid.Rows[activeCellPos.Row];
if (!row.IsNewRow)
{
_commitRowEdit.Execute(parameter);
}
}
}
_moveNextThenControl.Execute(parameter);
}
}
旧文書番号
83703