以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  Afterload 代码优化  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=66281)

--  作者:blsu33
--  发布时间:2015/4/2 15:57:00
--  Afterload 代码优化
老师,
  窗口的after load 代码耗时较长,请老师帮忙优化一下啊

For i As Integer = 1 To 999
    Dim btn As object
    If i <= 99 Then
        btn = e.Form.CreateControl("btn_tabcontrol1_pg" & i, ControlTypeEnum.Button)
    End If
    If i <= 199 And i>=100 Then
        btn = e.Form.CreateControl("btn_tabcontrol2_pg" & i-99, ControlTypeEnum.Button)
    End If
    If i <= 299 And i>=200 Then
        btn = e.Form.CreateControl("btn_tabcontrol2=3_pg" & i-199, ControlTypeEnum.Button)
    End If
    If i <= 399 And i>=300 Then
        btn = e.Form.CreateControl("btn_tabcontrol4_pg" & i-299, ControlTypeEnum.Button)
    End If
    If i <= 499 And i>=400 Then
        btn = e.Form.CreateControl("btn_tabcontrol5_pg" & i-399, ControlTypeEnum.Button)
    End If
    If i <= 599 And i>=500 Then
        btn = e.Form.CreateControl("btn_tabcontrol6_pg" & i-499, ControlTypeEnum.Button)
    End If
    If i <= 699 And i>=600 Then
        btn = e.Form.CreateControl("btn_tabcontrol7_pg" & i-599, ControlTypeEnum.Button)
    End If
    If i <= 799 And i>=700 Then
        btn = e.Form.CreateControl("btn_tabcontrol8_pg" & i-699, ControlTypeEnum.Button)
    End If
    If i <= 899 And i>=800 Then
        btn = e.Form.CreateControl("btn_tabcontrol9_pg" & i-799, ControlTypeEnum.Button)
    End If
    If i <= 999 And i>=900 Then
        btn = e.Form.CreateControl("btn_tabcontrol10_pg" & i-899, ControlTypeEnum.Button)
    End If


--  作者:Bin
--  发布时间:2015/4/2 16:00:00
--  
你这是在干嘛

上个例子看看, 把你需求说出来,也许可以换个高效率的方法

--  作者:有点甜
--  发布时间:2015/4/2 16:01:00
--  

 跟代码没有关系,你动态生成1000个控件肯定很慢啊。


--  作者:blsu33
--  发布时间:2015/4/2 16:55:00
--  
老师,
  例子是这个附件我写有些夸张了,实际上不会到999,但会有一些;

另外,页面的关闭按钮还有些没有达到理想,劳烦有点甜老师在帮忙改下,真是不好意思。关闭按钮的提示


图片点击可在新窗口打开查看此主题相关图片如下:关闭按钮提示.png
图片点击可在新窗口打开查看




[此贴子已经被作者于2015/4/2 17:18:45编辑过]

--  作者:blsu33
--  发布时间:2015/4/2 17:06:00
--  
第一个问题
窗口1的afterload

For i As Integer = 1 To 999
    Dim btn As object
    If i <= 99 Then
        btn = e.Form.CreateControl("btn_tabcontrol1_pg" & i, ControlTypeEnum.Button)
 
这是一个生成页面对应的BUTTON

对应的每个模块的窗口 会有很多 例如 页面999的PAGE1  对应窗口2的模块的很多窗口 我设定最大是99个(实际不会是这么多,可以小些)

--  作者:Bin
--  发布时间:2015/4/2 17:19:00
--  
你弄那么多这些东西想做什么?  还不如点击页面再生成
--  作者:Bin
--  发布时间:2015/4/2 17:20:00
--  
或者根据需求,生成对应数量的,不要那么多
--  作者:有点甜
--  发布时间:2015/4/2 17:26:00
--  

窗口2的SelectedIndexChanged事件的 e.Form 改成 Forms("窗口1")


--  作者:blsu33
--  发布时间:2015/4/2 17:42:00
--  
有点甜老师,
   还是不行,麻烦您再帮忙看看。


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20150402174215.png
图片点击可在新窗口打开查看


--  作者:有点甜
--  发布时间:2015/4/2 17:48:00
--  
 全部改啊