[英]How to intercept the TAB key press to focus on a check box which becomes enabled after TAB key was pressed?
當我們按下TAB鍵時,我們將焦點切換到給定選項卡順序中的下一個控件。 在我的情況下,當我單擊復選框(例如X),然后按Tab鍵后,控件將轉到文本字段,而不是進入先前禁用的下一個復選框(例如Y)。按下。 我希望控件移至復選框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將被聚焦。
PS由於TabIndex是每個控件中的一個屬性,因此您還可以通過更改TabIndex來動態決定下一個控件以將焦點集中在所需的位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.