簡體   English   中英

如何截獲TAB鍵以集中顯示在按下TAB鍵后啟用的復選框?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM