Tab索引在datagridview行中循环,无法移至Windows窗体C#中的下一个控件

马鲁克·梅穆德

如果选项卡索引位于datagridview的最后一行和最后一列,如果我此时按tab键,它将移至datagridview的第一行和第一列,而不是下一个control(button)。有人可以建议我如何停止最后一行的选项卡索引编制并移至下一个控件。我尝试了这段代码。

private void dgCoreRoutes_KeyUp(object sender, KeyEventArgs e)
{
   if (e.KeyCode == Keys.Tab)
   {
     if (dgCoreRoutes.CurrentCell.RowIndex == dgCoreRoutes.Rows.Count-1)
     {
         dgCoreRoutes.TabStop = true;
     }
     if (dgCoreRoutes.CurrentCell.ReadOnly)
     {
        dgCoreRoutes.CurrentCell = GetCoreRoutesGridNextCell(dgCoreRoutes.CurrentCell);
        e.Handled = true;
     }
}

private DataGridViewCell GetCoreRoutesGridNextCell(DataGridViewCell currentCell)
{
     int i = 0;
     DataGridViewCell nextCell = currentCell;
     do
     {
       int nextCellIndex = (nextCell.ColumnIndex + 1) % dgCoreRoutes.ColumnCount;
       int nextRowIndex = nextCellIndex == 0 ? (nextCell.RowIndex + 1) % dgCoreRoutes.RowCount : nextCell.RowIndex;
       nextCell = dgCoreRoutes.Rows[nextRowIndex].Cells[nextCellIndex];
       i++;
     } 
     while (i < dgCoreRoutes.RowCount * dgCoreRoutes.ColumnCount && nextCell.ReadOnly);
     return nextCell;
}
马鲁克·梅穆德

我返回了false,并将重点放在了下一个控件上,现在它对我有用。

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
   if(keyData == Keys.Tab && dgCoreRoutes.CurrentCell == dgCoreRoutes.Rows[dgCoreRoutes.Rows.Count - 1].Cells[(int)enGridColumns.Margin])
   {
     btnNext.Focus(); 
     return false;
   }
   else if (keyData == Keys.Tab && dgCoreRoutes.CurrentCell.ReadOnly)
   {
     dgCoreRoutes.CurrentCell = GetCoreRoutesGridNextCell(dgCoreRoutes.CurrentCell);
     return true;
   }
   else
      return base.ProcessCmdKey(ref msg, keyData);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

QML:移至表格中的下一个控件

来自分类Dev

将每个值的位置移至关联数组中的下一个索引

来自分类Dev

停止移至Tab键上的下一个控件

来自分类Dev

移至Mutt中的下一个标记消息

来自分类Dev

无法将图像移至引导网格中的下一个col

来自分类Dev

无法移至特定列中的下一个单元格

来自分类Dev

如果在R中失败,则移至下一个代码行

来自分类Dev

C ++移至file.txt中的下一个元素

来自分类Dev

在 iMacros 中为下一个循环提取下一行

来自分类Dev

如何访问当前索引/迭代中for循环中的下一个元素?

来自分类Dev

移至另一个文档中的下一个单元格

来自分类Dev

移至另一个文档中的下一个单元格

来自分类Dev

在NSMutableArray的下一个索引中插入元素

来自分类Dev

循环遍历文件中的行并将变量递增到下一个

来自分类Dev

移至下一个专栏

来自分类Dev

C# Windows 窗体应用程序使用下一个/上一个按钮显示/隐藏工具条

来自分类Dev

设置下一个指针时,循环链接列表中的C分段错误

来自分类Dev

如何移至数组的上一个/下一个索引键

来自分类Dev

如何停止<Enter>移至表单(Excel VBA)中的下一个字段

来自分类Dev

移至Sublime Text 3中的下一个花括号

来自分类Dev

如何将元素移至DOM中的下一个父元素?

来自分类Dev

移至图钉屏幕中的下一个编辑文本

来自分类Dev

移至Sublime Text 3中的下一个花括号

来自分类Dev

如何重新初始化NumberAxis并移至JavaFX LineChart中的下一个值?

来自分类Dev

当 FocusSearch 中的下一个控件无法聚焦在 Telerik 数据表单上时,应用程序崩溃

来自分类Dev

在C ++中删除链表下一个指针

来自分类Dev

在 C 中查找下一个闰年

来自分类Dev

使用C#选择数组中的下一个孩子

来自分类Dev

从C#中距离今天更近的列表中获取下一个日期

Related 相关文章

  1. 1

    QML:移至表格中的下一个控件

  2. 2

    将每个值的位置移至关联数组中的下一个索引

  3. 3

    停止移至Tab键上的下一个控件

  4. 4

    移至Mutt中的下一个标记消息

  5. 5

    无法将图像移至引导网格中的下一个col

  6. 6

    无法移至特定列中的下一个单元格

  7. 7

    如果在R中失败,则移至下一个代码行

  8. 8

    C ++移至file.txt中的下一个元素

  9. 9

    在 iMacros 中为下一个循环提取下一行

  10. 10

    如何访问当前索引/迭代中for循环中的下一个元素?

  11. 11

    移至另一个文档中的下一个单元格

  12. 12

    移至另一个文档中的下一个单元格

  13. 13

    在NSMutableArray的下一个索引中插入元素

  14. 14

    循环遍历文件中的行并将变量递增到下一个

  15. 15

    移至下一个专栏

  16. 16

    C# Windows 窗体应用程序使用下一个/上一个按钮显示/隐藏工具条

  17. 17

    设置下一个指针时,循环链接列表中的C分段错误

  18. 18

    如何移至数组的上一个/下一个索引键

  19. 19

    如何停止<Enter>移至表单(Excel VBA)中的下一个字段

  20. 20

    移至Sublime Text 3中的下一个花括号

  21. 21

    如何将元素移至DOM中的下一个父元素?

  22. 22

    移至图钉屏幕中的下一个编辑文本

  23. 23

    移至Sublime Text 3中的下一个花括号

  24. 24

    如何重新初始化NumberAxis并移至JavaFX LineChart中的下一个值?

  25. 25

    当 FocusSearch 中的下一个控件无法聚焦在 Telerik 数据表单上时,应用程序崩溃

  26. 26

    在C ++中删除链表下一个指针

  27. 27

    在 C 中查找下一个闰年

  28. 28

    使用C#选择数组中的下一个孩子

  29. 29

    从C#中距离今天更近的列表中获取下一个日期

热门标签

归档