VB6/VBA的MSFlexGrid如何转换为VB.NET的DataGridView

8

再次提到,更多VB6到VB.NET的迁移内容。

好的,当然,这不一定是一个“问题”的定义,但它会回答许多用户在未来可能遇到的问题,并且希望能够回答我的问题。

我正在试图编译VB6/VBA中MSFlexGrid属性和函数以及.NET的DataGridView中提供相同或相似用途的清单。我不仅需要它们,而且我确定其他人也需要。

到目前为止,这就是我拥有的,我希望其他人可以随意添加和编辑。我希望这可以帮助我和其他人将旧控件转换为具有与其旧代码相同功能的.NET控件。如果您想添加,请在BlockQuote中输入关系,在其所有位置中输入定义:

VB6/VBA                          VB.NET

MSFlexGrid.Cols         :::::    DataGridView.ColumnCount
MSFlexGrid.Col          :::::    ???
MSFlexGrid.Rows         :::::    DataGridView.RowCount
MSFlexGrid.Row          :::::    ???
MSFlexGrid.TextMatrix   :::::    DataGridView.Item(Int32,Int32).Value
MSFlexGrid.TextArray    :::::    ???
Add More Here           :::::    Add More Here

VB6 定义:

  1. MSFlexGrid.Cols = 返回或设置 MSFlexGrid 中的列总数。

  2. MSFlexGrid.Col = 返回或设置 MSFlexGrid 中活动单元格的坐标。

  3. MSFlexGrid.Rows = 返回或设置 MSFlexGrid 中的行总数。

  4. MSFlexGrid.Row = 返回或设置 MSFlexGrid 中活动单元格的坐标。

  5. MSFlexGrid.TextMatrix = 返回或设置任意单元格的文本内容。此属性允许您在不更改 RowCol 属性的情况下设置或检索单元格的内容。

  6. MSFlexGrid.TextArray = 返回或设置任意单元格的文本内容。此属性允许您在不更改 RowCol 属性的情况下设置或检索单元格的内容。

  7. 添加更多内容


VB.NET 定义:

  1. DataGridView.ColumnCount = 获取或设置在 DataGridView 中显示的列数。

  2. DataGridView.RowCount = 获取或设置在 DataGridView 中显示的行数。

  3. DataGridView.Item(Int32,Int32).Value = 提供索引器来获取或设置位于指定索引的行和列的交叉处的单元格,然后返回该值。

  4. 添加更多内容


在.Net中,窗体控件(尤其是DataGridView)通常绑定到数据源 - 业务对象和带有DSL的模型。而在VB6中,MSFlexGrid通常手动填充,或使用ADODB.recordset或偶尔使用Shaped SQL命令绑定HeiracrchicalMSFlexGrid。因此,当涉及到MSFlexGrid.Col/Row属性时,您通过对象模型访问它们,而不是控件本身。关注点分离。ps编辑笑 - Jeremy Thompson
1个回答

1

对于行和列属性,您可以使用类似以下的内容:

    Public Class MyGrid
    Inherits System.Windows.Forms.DataGridView
(...)
    Public Property Col() As Integer
        Get
                Return Me.CurrentCell.ColumnIndex
        End Get
        Set(ByVal value As Integer)
                    Me.CurrentCell = Me(value, Me.CurrentCell.RowIndex)
            End If
        End Set
    End Property
(...)
    Public Property Row() As Integer
        Get
                Return Me.CurrentCell.RowIndex
        End Get
        Set(ByVal value As Integer)
                    Me.CurrentCell = Me(value, Me.CurrentCell.ColumnIndex)
            End If
        End Set
    End Property
(...)
End Class

然后继续查找并将每个属性、方法和事件与原始控件进行匹配。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接