2015-12-02 83 views
0

当我们按下TAB键时,我们将焦点更改为给定Tab键顺序中的下一个控件。在我的情况下,当我点击一个复选框(比如X)时,然后按Tab键后控件进入一个文本字段,而不是进入下一个复选框(比如Y)按下。我希望控件移动到复选框Y.谢谢。如何拦截TAB键按下以关注在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 
      } 
     } 
+0

更改复选框Y的选项卡顺序来X后?只要它被禁用,它将被跳过。 – GolezTrol

+1

这听起来像你使用错误的事件来决定启用复选框Y - 如果复选框X启用复选框Y,它可能应该在它的检查事件中执行它 - 听起来像你在做某事就像一个模糊/离开事件,此时要移动到的下一个控件已经被确定。 –

回答

0

有一个属性中的每个控制器有被称为TabIndex。您可以使用此属性分配下一个控件,该控件将重点放在TAB键上。例如,如果Control1具有TabIndex 1并且Control2具有TabIndex 2,则在按下Control1上的TAB键后,Control2将被聚焦。

P.S.由于TabIndex是每个Control中的属性,您还可以通过更改TabIndex来动态决定下一个控件,以便在任何需要的位置集中焦点。

相关问题