采用sourcegrid显示数据速度问题
刚从VB6转入VB.net,sourcegrid控件也是第一次用,在VB6中用MSHFlexGrid显示数据,稍作修改后在VB.net 2012中能用,但是速度相差很大,VB6中速度非常快,而在VB.net中速度差了不是一点,一个202*1437的数据表在VB6中只要2秒以内就能显示完毕,而在.net中显示第一行大概要半秒,以后速度越来越慢,第10行时差不多一秒才显示一行。我不知道sourcegrid是否有专用的输入语句。
下面是关键代码,请各位帮我看看是怎么回事,谢谢
VB.net代码
For i = 0 To nSamplesNumber
sTmp = LineInput(1)
TmpVar = Split(sTmp, ",")
.Rows.Insert(i)
For j = 0 To nDescriptorsNumber - 1
If i > 0 Then
If TmpVar(j) = "" Then TmpVar(j) = -9999
Grid1(i, j) = New SourceGrid.Cells.Cell(String.Format("{0:n4}", TmpVar(j)))
Else
Grid1(0, j) = New SourceGrid.Cells.ColumnHeader(TmpVar(j))
End If
Next j
Grid1.AutoSizeCells()
Next i
以下是VB6代码
For i = 0 To nRows--------------------编程问答-------------------- For i = 0 To nSamplesNumber
Line Input #Filenum, Tmp
TmpVar = Split(Tmp, ",")
For j = 0 To mCols - 1
If i > 0 And j > 1 Then
.TextMatrix(i, j) = Format(TmpVar(j), "0.0000")
Else
.TextMatrix(i, j) = TmpVar(j)
End If
Next j
Next i
sTmp = LineInput(1)
TmpVar = Split(sTmp, ",")
.Rows.Insert(i)
For j = 0 To nDescriptorsNumber - 1
If i > 0 Then
If TmpVar(j) = "" Then TmpVar(j) = -9999
Grid1(i, j) = String.Format("{0:n4}", TmpVar(j))
Else
Grid1(0, j) = New SourceGrid.Cells.ColumnHeader(TmpVar(j))
End If
Next j
Next i
Grid1.AutoSizeCells()
你改成这样肯定会快很多
另外你用datagridview多好,干嘛还用这古老的东西,datagridview直接绑定很快的 --------------------编程问答-------------------- 原来用的360浏览器,居然不能回复,还在论坛求助了,今天换用IE10,可以回复了
非常感谢gxingmin的回帖,
1、按照你的方式修改提示出错:“无法将类型为“System.String”的对象强制转换为类型“SourceGrid.Cells.ICell”。”
2、datagridview有列数限制,我的数据表为202*1437,该控件装不下啊
3、改用VB6的MSHFlexGrid显示速度非常快,但是这个界面比较难看啊,在VB2012中很多属性方法都变了
4、请推荐好用点的表格控件,关键还是速度 --------------------编程问答-------------------- For i = 0 To nSamplesNumber
sTmp = LineInput(1)
TmpVar = Split(sTmp, ",")
.Rows.Insert(i)
For j = 0 To nDescriptorsNumber - 1
If i > 0 Then
If TmpVar(j) = "" Then TmpVar(j) = -9999
Grid1(i, j) = New SourceGrid.Cells.Cell(String.Format("{0:n4}", TmpVar(j)))
Else
Grid1(0, j) = New SourceGrid.Cells.ColumnHeader(TmpVar(j))
End If
Next j
Next i
Grid1.AutoSizeCells()
改这样呢 --------------------编程问答-------------------- 我原来就是这样写的
补充:.NET技术 , VB.NET