选择最后一行时,为什么在MSFlexGrid中选择了所有行?

时间:2018-09-12 23:54:13

标签: vb6 msflexgrid

我有一个包含2列的MSFlexGrid控件,我的所有数据都显示在此网格上。单击添加按钮时,添加新行,然后选择新行。

问题是所有行都被选中,我只需要选择新行。

这是我的代码:

Private Sub Add_Click()
    FGrid.Rows = FGrid.Rows + 1
    FGrid.RowSel = FGrid.Rows - 1
    FGrid.ColSel = 0

    If FGrid.Rows > 1 Then ' > 10
        FGrid.TopRow = FGrid.Rows - 1
    Else
        FGrid.TopRow = 1 
    End If

    FGrid.TextMatrix(FGrid.RowSel, 0) = Format(Date, "DD/MM/YYYY")
    FGrid.SetFocus
End Sub  

1 个答案:

答案 0 :(得分:2)

看起来您正在寻找Row属性,而不是RowSel属性。 您可以根据需要将两者结合使用

Row属性:

  

返回/设置FlexGrid中的活动单元格。

RowSel属性:

  

确定一系列单元格的开始或结束行或列。

设置RowSel值时,它被视为选择的结尾,因为Row值仍为0 (未更改)。因此,您需要使用以下内容:

FGrid.Row = FGrid.Rows - 1
'FGrid.RowSel = FGrid.Rows - 1   ' Optional.

还有一件事情,您可以使用.Rows在第一个单元格中添加一个具有值的行,而不是先递增TextMatrix()然后使用AddItem来为该单元格分配一个值, 。在这种情况下,您的代码将如下所示:

FGrid.AddItem Format(Date, "dd/MM/yyyy")

FGrid.Row = FGrid.Rows - 1
'FGrid.RowSel = FGrid.Rows - 1   ' Optional.
FGrid.ColSel = 0

If FGrid.Rows > 10 Then
    FGrid.TopRow = FGrid.Rows - 1
End If

FGrid.SetFocus