【发布时间】:2014-07-24 17:41:20
【问题描述】:
我的表单上有一个包含两列的 Datagridview。我只希望选择第一列中的单元格。所以我使用datagridview 的keydown 事件来捕获TAB 和SHIFT+TAB。因此,如果选择了第一行并且用户按下了 Tab,则将选择第二行,而不是停留在第一行并选择第二列的单元格。
我的 TAB 键的 if 语句工作正常,但由于某种原因 SHIFT+TAB 语句不能正常工作。当前选定单元格上方的单元格未被选中。什么都没有发生。
Private Sub myGrid_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles myGrid.KeyDown
If e.KeyCode = Keys.Tab Then
e.SuppressKeyPress = True
SendKeys.Send("{DOWN}")
End If
If e.Modifiers = Keys.Shift AndAlso e.KeyCode = Keys.Tab Then
e.SuppressKeyPress = True
SendKeys.Send("{UP}")
End If
End Sub
但真正奇怪的是,如果我在语句中添加一个消息框,它会起作用。
If e.Modifiers = Keys.Shift AndAlso e.KeyCode = Keys.Tab Then
MsgBox("test")
e.SuppressKeyPress = True
SendKeys.Send("{UP}")
End If
有什么想法吗?
【问题讨论】:
-
为什么要重新定义用户体验?所有用户都习惯了上下移动的事实,嗯,上下移动,并且标签是……横向的。这就像让汽车垂直而不是水平运行。
-
这两列是“问题#”和“分数”。当您选择一行时,表单上的其余信息会更改以匹配所选问题的信息。我只是希望用户只需按一次 TAB 而不是两次即可连续向下。
-
为什么不让用户使用他们的默认选项 - 上/下?
-
用户可以根据需要使用向上/向下箭头键。我只是希望 TAB 键从第 0 列:单元格 0 到第 0 列:第 1 列而不是第 0 列:第 0 列到第 1 列:单元格 0
标签: vb.net winforms datagridview