VB.NET Datagridview - 修改当前单元格

Posted

技术标签:

【中文标题】VB.NET Datagridview - 修改当前单元格【英文标题】:VB.NET Datagridview - Modify currentcell 【发布时间】:2016-02-03 14:17:53 【问题描述】:

这是我第一次提出问题,我会尽量说清楚。 我在 vb.net 中创建了一个包含 3 列和 5 行的 datagridview。 我的列包含作业标题。每行包含有关这些工作的信息:名字、姓氏、社会、电话号码、邮件。

看起来像:

             | J1 | J2 | J3
----------------------------
firstname    | x  | y  | z
lastname     | x1 | y1 | z1
society      | x2 | y2 | z2
phone number | x3 | y3 | z3
mail         | x4 | y4 | z4

当我编辑作业 1 (x) 的名字时,我想通过按 Tab 键进入该作业 (x1) 的姓氏单元格。 目前,当我按 Tab 键时,我会输入第二个作业 (y) 的名字单元格。

我试图在 datagridview.CellEndEdit 事件之后更改当前单元格。我注意到单元格 (x1) 已被选中,但 tab 键将我编辑的当前单元格更改为“普通当前单元格”(y)。

如何防止 tab 键更改我编辑的当前单元格? 谢谢。

【问题讨论】:

你违反了惯例。为什么不水平排列行?您将无法以这种方式使用数据绑定。 我知道我不遵守约定,但我的经理想要这种功能。 【参考方案1】:

尝试创建您自己的 DataGridView 控件,以便您可以覆盖 ProcessCmdKey 操作:

Public Class DataGridViewEx
  Inherits DataGridView

  Protected Overrides Function ProcessCmdKey(ByRef msg As Message, keyData As Keys) As Boolean
    If keyData = Keys.Tab Then
      Me.ProcessDownKey(keyData)
      Return True
    End If
    Return MyBase.ProcessCmdKey(msg, keyData)
  End Function
End Class

【讨论】:

谢谢LarsTech,它工作得很好!我用 currentCell 的编程修改替换了 Me.ProcessDownKey(keyData)。

以上是关于VB.NET Datagridview - 修改当前单元格的主要内容,如果未能解决你的问题,请参考以下文章

VB.NET Datagridview - 修改当前单元格

vb.net,datagridview怎么用?怎么弄成下面的效果?修改和删除怎么弄?

关于VB.NET中 datagridview 刷新问题

在 vb.net 的 datagridview 中添加行号

关于VB.NET中 datagridview 刷新问题

Datagridview 单元格值评估 vb.net