Gorgon_Meducer 发表于 2009-8-3 19:49:46

[上位机][VB]如何简单的动态添加某一个窗体的副本

<font color=brown>
    最近着手编写某一个大型工具软件,需要用VB动态复制某一窗体,顺手baidu了一下,五花八门的答案,经过实验
找到一种比较靠谱的:
    A、建立一个module,并在其中添加一个窗体数组,例如
       public formArray(0 to 2) as frmExample
       public formCount as intager
    B、在某一个位置,添加如下代码
       set formArray(下标) as new frmExample
       load formArray(<下标>)
       就可以动态的复制窗体frmExample了
    C、通过数组formArray()就可以在任意位置访问这些新添加的窗体。
    使用这种方法有一个缺点:允许添加的动态窗体数量是有限的,由于全局变量不允许用redim,所以,通过redim的企图
    是无效的……如果你真的想突破这种限制……借助某些dll吧……原理就是利用C语言来修改SafeArray,动态分配空间给
    全局数组……dll + VB果然是小原子弹啊……

snoopyzz 发表于 2009-8-3 20:01:46

还是喜欢c#...

yyccaa 发表于 2009-8-3 20:42:48

vb6可以redim

http://cache.amobbs.com/bbs_upload782111/files_17/ourdev_466913.jpg
(原文件名:redim.jpg)

Gorgon_Meducer 发表于 2009-8-3 22:41:13

to 【2楼】 yyccaa
    你在函数里面redim,请问出了这个函数,如何访问这些窗体……

yyccaa 发表于 2009-8-3 23:11:18

frmarr(n).xxxx
n在范围内。

Gorgon_Meducer 发表于 2009-8-4 09:49:18

你增加一个非动态添加的窗体,并在程序启动后,启动该窗体,在这个窗体中,可以访问这些动态生成的窗体么?

ivws 发表于 2009-8-4 09:58:15

其实用VB做上位机也是不错的选择。。。。

yyccaa 发表于 2009-8-4 11:25:36

你增加一个非动态添加的窗体,并在程序启动后,启动该窗体,在这个窗体中,可以访问这些动态生成的窗体么?
__________________________

完全没有问题的。建议自己动手试下就知道了,很简单的。
页: [1]
查看完整版本: [上位机][VB]如何简单的动态添加某一个窗体的副本