以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  这句代码效率好低啊.  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=48456)

--  作者:永不言弃
--  发布时间:2014/3/29 1:09:00
--  这句代码效率好低啊.
 

Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")

lvw.Images.LargeSize = New Size(150,110)

lvw.Rows.Clear()

lvw.Images.Clear()

lvw.View = ViewMode.LargeIcon

lvw.AllowDrag = True

lvw.AllowDrop = True

For Each dr As DataRow In DataTables("花型基础资料").Select("花号 Like \'*" & e.Form.Controls("TextBox1").Text & "\'")

    Dim Key As String = dr("花型图片")

    Dim vr As  WinForm.ListViewRow = lvw.Rows.Add()

    vr.Text = dr("花号")

    vr.Name = dr("花号")

    vr.ImageKey = Key

    lvw.Images.AddLargeImage(Key, Key)

Next

 

 

老师,能有改进的办法吗?执行完整个过程,用时差不多两分钟.我都以为死机了,郁闷死.

[此贴子已经被作者于2014-3-29 1:10:01编辑过]

--  作者:lsy
--  发布时间:2014/3/29 7:54:00
--  
Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
lvw.Images.LargeSize = New Size(150,110)
lvw.Rows.Clear()
lvw.Images.Clear()
lvw.View = ViewMode.LargeIcon
lvw.AllowDrag = True
lvw.AllowDrop = True
Dim drlst As List(Of DataRow) = DataTables("花型基础资料").Select("花号 Like \'*" & e.Form.Controls("TextBox1").Text & "\'")
For Each dr As DataRow In drlst
    lvw.Rows.Add()
Next
For i As Integer  = 0 To drlst.Count - 1
    lvw.Rows(i).Text = drlst(i)("花号")
    lvw.Rows(i).Name = drlst(i) ("花号")
    lvw.Rows(i).ImageKey = drlst(i)("花型图片")
    lvw.Images.AddLargeImage(drlst(i)("花型图片"), drlst(i)("花型图片"))
Next

--  作者:有点甜
--  发布时间:2014/3/29 9:06:00
--  

 建议楼主看看这章 stopredraw

 

 http://www.foxtable.com/help/topics/2845.htm

[此贴子已经被作者于2014-3-29 9:06:44编辑过]

--  作者:lsy
--  发布时间:2014/3/29 9:24:00
--  
以下是引用有点甜在2014-3-29 9:06:00的发言:

 建议楼主看看这章 stopredraw

 

 http://www.foxtable.com/help/topics/2845.htm

[此贴子已经被作者于2014-3-29 9:06:44编辑过]

有道理。


--  作者:菲舍尔
--  发布时间:2014/3/29 10:23:00
--  
甜说的对,加stopredraw 和不加,时间相差1000倍
--  作者:永不言弃
--  发布时间:2014/3/29 10:31:00
--  
加了暂停和恢复绘制,还是不管用.
--  作者:有点甜
--  发布时间:2014/3/29 10:55:00
--  
以下是引用永不言弃在2014-3-29 10:31:00的发言:
加了暂停和恢复绘制,还是不管用.

 

每次的数据量都很大?你试试少一些数据,看看执行效率。


--  作者:永不言弃
--  发布时间:2014/3/29 11:08:00
--  
原来只有100行左右的时候是好的,现在加到了一万行,就跑不动了.我的电脑也是老的笔记本,这也有关系吧.
--  作者:有点甜
--  发布时间:2014/3/29 11:17:00
--  

 每次要显示的数据量如果较多的话,要用虚拟模式或分页显示的。

 

http://www.foxtable.com/help/topics/2780.htm

 

http://www.foxtable.com/help/topics/2781.htm

 

http://www.foxtable.com/help/topics/2824.htm