【发布时间】:2016-03-06 12:46:07
【问题描述】:
当我们按下 TAB 键时,我们将焦点更改为给定 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
}
}
【问题讨论】:
-
将复选框 Y 的 Tab 键顺序更改为在 X 之后?只要它被禁用就会被跳过。
-
听起来您使用错误的事件来决定启用复选框 Y - 如果复选框 X 启用复选框 Y,它可能应该在其选中事件中执行此操作 - 听起来像您在模糊/离开事件中执行此操作,此时已确定要移动到的下一个控件。
标签: c# checkbox keyboard-shortcuts setfocus