当前位置:编程学习 > C#/ASP.NET >>

采用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
                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
--------------------编程问答--------------------    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) = 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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,