如何拦截TAB键按下以集中在按下TAB键后启用的复选框上
本文关键字:TAB 启用 复选框 何拦截 集中 | 更新日期: 2023-09-27 18:25:16
当我们按下TAB键时,我们将焦点更改为给定选项卡顺序的下一个控件。在我的情况下,当我点击一个复选框(比如X),然后在按下Tab按钮后,控件将进入一个文本字段,而不是进入下一个复选盒(比如Y),该复选框以前被禁用,在按下Tab键后变为启用。我希望控件移到复选框Y。谢谢。
我有以下代码,但当我按下Tab按钮时,它没有运行:
if (((e.KeyCode == Keys.Tab && !e.Shift) || e.KeyCode == Keys.Enter) && _resultsGrid.ActiveCell != null)
{
if (_resultsGrid.ActiveCell.IsInEditMode && (_resultsGrid.ActiveCell == lastEditableCell || e.KeyCode == Keys.Enter))
{
DateTime tempDateTime = DateTime.Today;
if (!(_resultsGrid.ActiveCell.Column.DataType.ToString() == "System.DateTime" && !System.DateTime.TryParse(_resultsGrid.ActiveCell.Text, out tempDateTime)))
{
if (_resultsGrid.ActiveCell.Text == "" && (_resultsGrid.ActiveCell.Column.DataType == typeof(System.Int16) ||
_resultsGrid.ActiveCell.Column.DataType == typeof(System.Int32) ||
_resultsGrid.ActiveCell.Column.DataType == typeof(System.Int64) ||
_resultsGrid.ActiveCell.Column.DataType == typeof(System.Decimal)))
_resultsGrid.ActiveCell.Value = 0;
else
_resultsGrid.ActiveCell.Value = _resultsGrid.ActiveCell.Text;
}
_returnKeyClickedToSaveRow = true;
FireSaveEvent();
if (!_saveFailed)
{
if (e.KeyCode == Keys.Tab)
{
_checklastkey = true;
_resultsGrid.PerformAction(UltraGridAction.CommitRow);
}
else
{
_resultsGrid.PerformAction(UltraGridAction.CommitRow);
_resultsGrid.PerformAction(UltraGridAction.DeactivateCell);
}
}
_returnKeyClickedToSaveRow = false;
this._entityDS.AcceptChanges(); //EAMNET-9811
}
}
每个控件都有一个名为TabIndex的属性。您可以使用此属性指定下一个集中在TAB键上的控件。例如,如果Control1具有TabIndex 1,而Control2具有TabIndex 2,则在按下Control1上的TAB键后,Control2将聚焦。
附言:由于TabIndex是每个控件中的一个属性,您还可以通过更改TabIndex来动态决定下一个控件,以便将焦点集中在您想要的任何位置。