我使用按钮的键盘快捷键和datagridview时会出现奇怪的情况。以下是解释:
我有一个winform,其中有一个datagridview和一个保存按钮。保存按钮具有键盘快捷键Alt + S.我在网格中输入了一些行,并在Save按钮上单击验证所有单元格,如果单元格值无效,那么我将焦点设置为该单元格。以下是用于实现该目的的代码:
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事件,但是当我使用快捷方式保存按钮时,它不会被触发。
为什么会这样?任何输入?我在使用快捷方式时如何设置焦点?
更新:我已经完成了正确使用它的技巧。我在保存按钮的按钮单击事件中添加了SaveButton.Focus()代码作为第一行。这是多余的,但当用户使用快捷键访问此按钮时,强制网格失去焦点。这个解决方案工作正常,但不确定上述情况可能是什么原因。还在寻找答案。 :(
答案 0 :(得分:1)
检查DataGridView keyDown事件的组合键,然后如果键是Alt + S,则将焦点设置为DatagridView
<强>更新强>
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
}
}