MsHFlexGrid删除几行后再添加有问题

monkst 2005-11-14 09:57:27
我两个按钮,一个添加,一个删除,但发现一个问题,多操作几次后,界面上显示的条目与实际的不符,DEBUG 状态下看到frmData.MSHFlexGrid1.Rows =12 了,但界面上只显示了5行,怎么回事?



添加与删除以码如下
'添加
Private Sub Command1_Click()
Dim i As Integer
i = frmData.MSHFlexGrid1.Rows
frmData.MSHFlexGrid1.Rows = i + 1
frmData.MSHFlexGrid1.TextMatrix(i, 0) = lblSysTime.Caption
frmData.MSHFlexGrid1.TextMatrix(i, 1) = Text1(0)
frmData.MSHFlexGrid1.TextMatrix(i, 2) = Text2(0)
frmData.MSHFlexGrid1.TextMatrix(i, 3) = Text3(0)
frmData.MSHFlexGrid1.TextMatrix(i, 4) = Text4(0)
frmData.MSHFlexGrid1.TextMatrix(i, 5) = Text5(0)
frmData.MSHFlexGrid1.TextMatrix(i, 6) = Text6(0)
frmData.MSHFlexGrid1.TextMatrix(i, 7) = Text7(0)
frmData.MSHFlexGrid1.TextMatrix(i, 8) = Text8(0)
frmData.MSHFlexGrid1.TextMatrix(i, 9) = Text9(0)
frmData.MSHFlexGrid1.TextMatrix(i, 10) = Text1(1)
frmData.MSHFlexGrid1.TextMatrix(i, 11) = Text2(1)
frmData.MSHFlexGrid1.TextMatrix(i, 12) = Text1(2)
frmData.MSHFlexGrid1.TextMatrix(i, 13) = Text2(2)
frmData.MSHFlexGrid1.TextMatrix(i, 14) = Text3(2)
frmData.MSHFlexGrid1.TextMatrix(i, 15) = Text4(2)
frmData.MSHFlexGrid1.TextMatrix(i, 16) = Text5(2)
frmData.MSHFlexGrid1.TextMatrix(i, 17) = Text6(2)
frmData.MSHFlexGrid1.TextMatrix(i, 18) = Text7(2)
frmData.MSHFlexGrid1.TextMatrix(i, 19) = Text8(2)
frmData.MSHFlexGrid1.TextMatrix(i, 20) = Text9(2)

End Sub

'删除
Private Sub Command2_Click()
Dim iCon As Integer
With frmData.MSHFlexGrid1
For i = .Rows - 1 To 2 Step -1
.RemoveItem i
Next i
iCon = .Rows
End With
End Sub
...全文
184 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
monkst 2005-11-14
  • 打赏
  • 举报
回复
找到规律了,只要是行数少于删除前的行数,都不会显示,只有多于删除前的行数,才会显示。这是这个什么样的问题?
monkst 2005-11-14
  • 打赏
  • 举报
回复
实际上还是有几条中间的行没有显示在界面上。
monkst 2005-11-14
  • 打赏
  • 举报
回复
删除是干净了,但添加的老毛病还在
winehero 2005-11-14
  • 打赏
  • 举报
回复
'改为这个吧:
With frmData.MSHFlexGrid1
For i = 2 To .Rows - 1
.RemoveItem 1
Next i
monkst 2005-11-14
  • 打赏
  • 举报
回复
.RemoveItem i 没问题,我就是删除最后一行,相反,如果改为RemoveItem .Rows - 1 就不对了。
With frmData.MSHFlexGrid1
For i = .Rows - 1 To 2 Step -1
.RemoveItem .Rows - 1
Next i

End With
一行也删除不了
winehero 2005-11-14
  • 打赏
  • 举报
回复
删除代码有误:
.RemoveItem .Rows - 1 '将i改为.Rows - 1,因为你删除后,这个i是变动的,而总行数也在变
'所以建议总是删除最后那一行
monkst 2005-11-14
  • 打赏
  • 举报
回复
你们有没有试一下,我后来改为用MSFlexGrid 控件,就没有问题了,但不知道为何,难道MSHFlexGrid 有问题?
winehero 2005-11-14
  • 打赏
  • 举报
回复
应该不会,在增加脚本里他又定义了一个i变量。。。
huitiansou 2005-11-14
  • 打赏
  • 举报
回复
你的删除块中引用的i是全局量,这个量在你的增加删除操作中发生的变化,你可以没有注意到
winehero 2005-11-14
  • 打赏
  • 举报
回复
是不是还有别的处理?简单看这两个代码应该没问题。。。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧