【发布时间】:2015-10-22 21:17:29
【问题描述】:
我有一个三列 DataGridView,我希望用户在最后一列输入 Tab 以转到下一行,但转到第 1 列而不是第 0 列。以下代码收到错误 System.StackOverflowException
我看到了有关如何从按钮更改 CurrentCell 的代码,但事件(ChangeCurrentCell、CellLeave)似乎可以容忍更改当前单元格。
Private Sub dgvEngine_CellLeave(sender As Object, e As DataGridViewCellEventArgs) Handles dgvEngine.CellLeave
If mbLoadEng = True Then Exit Sub
If e.ColumnIndex = 2 Then
dgvEngine.CurrentCell = dgvEngine(1, e.RowIndex + 1)
End If
End Sub
如何通过 DataGridView 事件更改当前单元格?
我不限于这种方法 - 我只是想跳过第 0 列,因为用户使用标签浏览单元格。
为我的具体情况找到了更好的方法 - 使用 Row HeaderCell...
dgvEngine.Rows(iRow).HeaderCell.Value = col.ColumnName.Substring(1)
稍后
dgvEngine.AutoResizeRowHeadersWidth(
DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders)
col.ColumnName 来自 DataRow。我所做的本质上是一个以 DataRow 列名作为行标题的转置网格。
【问题讨论】:
-
它与c#有什么关系?为什么要标记 c#?
-
我对用 C# 编写的答案持开放态度 - 只是扩大了受众范围。再加上 C# 比 VB 人聪明得多... :)
-
我自我回答了——我改变了方向。如果有人正在寻找积分,当然可以回答关于更改当前单元格的 OP。
-
@rheitzman 此评论主要基于意见,可能会引发热议。 toddelliott.net/2014/03/production/…
标签: c# vb.net winforms datagridview