首页 文章

DataGridView - 用于Cell Focus的快捷键和鼠标单击

提问于
浏览
1

我有一个奇怪的情况,使用按钮的键盘快捷键和datagridview . 这是解释:

我有一个winform,其中有一个datagridview和一个保存按钮 . “保存”按钮具有键盘快捷键Alt S.我在网格中输入了一些行,并在“保存”按钮上单击验证所有单元格,如果单元格值无效,则我将焦点设置为该单元格 . 以下是用于实现该目的的代码:

for (var index = 0; index < GridView.Rows.Count; index++)
  {
    var itemRow = GridView.Rows[index];

    if (itemRow.Cells[SomeColumn.Name].Value.ToString() == string.Empty)
    {
       GridView.CurrentCell = itemRow.Cells[SomeColumn.Name];
       GridView.Focus();
    }
  }

上面的代码工作正常,当我点击保存按钮时,用光标将焦点设置在特定的单元格中 .

但是,当我使用快捷键时,焦点根本没有设置到单元格 . 我不确定为什么它会像这样 .

出于好奇,我测试了datagridview的一个事件 . 单击“保存”按钮时会触发datagridview的CellLeave事件,但是当我使用快捷方式保存按钮时,它不会被触发 .

它为什么会这样?任何输入?使用快捷方式时如何设置焦点?

Update :我've done a trick to work it properly. I'已在保存按钮的按钮单击事件中添加了SaveButton.Focus()代码作为第一行 . 这是多余的,但当用户使用快捷键访问此按钮时,强制网格失去焦点 . 这个解决方案工作正常,但不确定上述情况可能是什么原因 . 还在寻找答案 . :(

1 回答

  • 1

    检查DataGridVeiw keyDown事件的组合键,然后如果键是Alt S,则将焦点设置为DatagridVeiw

    Updated:

    private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
     {
        if (e.KeyData == (Keys.Alt | Keys.S))
        {
             //put your code to validate i.e. what u are trying in button click event
        }
     }
    

相关问题