以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]添加控件速度  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=105360)

--  作者:blsu33
--  发布时间:2017/8/17 16:56:00
--  [求助]添加控件速度
 老师,
  怎么做能,提高页面添加控件的速度,或许我写的代码过于啰嗦,您给看看除标注颜色之外的代码怎么改能快些?

AfterLoad
Dim tb As WinForm.TabControl = e.Form.Controls("TabControl1")
Dim pg As WinForm.TabPage = tb.SelectedPage


\'放置控件

e.Form.StopRedraw
Dim s1 As WinForm.SplitContainer=e.ForM.CreateControl("SPL_01",ControlTypeEnum.SplitContainer)
S1.Dock=5
Dim s2 As WinForm.SplitContainer=e.ForM.CreateControl("SPL_02",ControlTypeEnum.SplitContainer)
S2.Dock=5
Dim s3 As WinForm.SplitContainer=e.ForM.CreateControl("SPL_03",ControlTypeEnum.SplitContainer)
S3.Dock=5
S3.Orientation=0
Dim s4 As WinForm.SplitContainer=e.ForM.CreateControl("SPL_04",ControlTypeEnum.SplitContainer)
S4.Dock=5
S4.Orientation=0
S1.Panel2.AddControl(S2)
S1.Panel1.Collapsed=True
S2.Panel1.AddControl(S3)
S2.Panel2.Collapsed=True
S3.Panel2.AddControl(S4)
S3.Panel1.Collapsed=True
S1.FixedPanel=1
S2.FixedPanel=2
S3.FixedPanel=1
S4.FixedPanel=2
pg.AddControl(S1)\'这块是页面添加


Dim zd As New Dictionary(Of String, object)
zd.Add("01",S1.Panel1)
zd.Add("02",S2.Panel2)
zd.Add("03",S3.Panel1)
zd.Add("04",S4.Panel2)
zd.Add("05",S4.Panel1)

Dim DT As DataTable=DataTables("AS002控件")
For Each k As String In zd.Keys \'显示所有键及其对应的值
    Dim dr As DataRow=dt.find("编码规则=\'"& K &"\'")                  ’这块将用SQL代替
    If dr IsNot Nothing Then
        Functions.Execute("addc",e,zd(k), dr)                      ‘这块为添加单个控件,可以忽略速度问题
        zd(k).Collapsed=False
    Else
        zd(k).Collapsed=True
    End If
Next


Dim w As Integer=pg.Width
Dim h As Integer=pg.Height
S1.SplitterDistance = 150\'必须是添加控件后添加的属性
S2.SplitterDistance = w-150-150\'必须是添加控件后添加的属性
S3.SplitterDistance = 60\'必须是添加控件后添加的属性
S4.SplitterDistance = h-60-60\'必须是添加控件后添加的属性



S1.IsSplitterFixed=True
S2.IsSplitterFixed=True
S3.IsSplitterFixed=True
S4.IsSplitterFixed=True
e.Form.ResumeRedraw
[此贴子已经被作者于2017/8/17 17:09:09编辑过]

--  作者:有点甜
--  发布时间:2017/8/17 18:08:00
--  

如果find改成sqlfind会变慢。

 

耗时代码肯定在这里,太重复的动态编译肯定耗时 Functions.Execute("addc",e,zd(k), dr)