以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [问题] 窗口传值问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=59845)

--  作者:xjt26605275
--  发布时间:2014/11/12 10:02:00
--  [问题] 窗口传值问题
如题,如何传值给窗口?
有没有办法像vs一样,在窗口中定变量,然后传值?
问题: 现在做的项目中,窗口有3种状态,1.禁用,禁止用户使用,2.只读,允许用户使用部分查看功能,3.读写,拥有所有操作,
所有的窗口都设成主窗口,菜单是动态生成的,用户点击菜单的时候打开对应的窗口,在窗口的加载事件里处理权限问题
现在想到的解决方法是全局变量的Dictionary来存放,其他的方法或多或少都有一些问题.
怎么办?


--  作者:Bin
--  发布时间:2014/11/12 10:03:00
--  
定义一个全局变量来传递
--  作者:xjt26605275
--  发布时间:2014/11/12 10:04:00
--  
只有这种方法吗?
--  作者:xjt26605275
--  发布时间:2014/11/12 10:05:00
--  
项目上百个窗口啊
--  作者:Bin
--  发布时间:2014/11/12 10:08:00
--  
窗口未关闭,可以通过窗口的  baseform.tag 来传值 如果窗口关闭了,值就丢失了.

同样,你也可以直接获取窗口的任何控件的值

forms("X").controls("控件名").text

--  作者:xjt26605275
--  发布时间:2014/11/12 10:16:00
--  
设置主窗口,使用Forms("窗口").open  主线程继续执行,
在Forms("窗口").open之前赋值又不行,空指针异常
我想过使用BaseForm的Tag,但还是和上面一样,出现空指针异常

--  作者:有点甜
--  发布时间:2014/11/12 10:18:00
--  

 这样写

 

Forms("窗口1").Panel.tag = 1


--  作者:xjt26605275
--  发布时间:2014/11/12 10:24:00
--  
要在窗口的加载事件发生之前tag就要有值了,因为要在里面做权限处理,这句话是在open之后才能写吧
--  作者:有点甜
--  发布时间:2014/11/12 10:26:00
--  
以下是引用xjt26605275在2014-11-12 10:24:00的发言:
要在窗口的加载事件发生之前tag就要有值了,因为要在里面做权限处理,这句话是在open之后才能写吧

 

用一个统一的变量,用于窗口间的参数传递,比如 tempVal

 

赋值和取值,就用它临时过渡一下。


--  作者:xjt26605275
--  发布时间:2014/11/12 10:27:00
--  
而且因为窗口不是ShowDialog,主线程会继续执行,如果是open后给tag赋值了不行,鬼知道窗口什么时候加载完成