C#的WinForm程序中,不同窗口如何共享变量和交互?

rmryt 2007-10-18 04:55:21
比如我的应用程序有一个初始Form,从这个Form可以弹出其他Form,可以是Show()的也可以是ShowDialog()。

主窗口和子窗口如何共享变量呢,假设子窗口要使用主窗口里的变量值应该怎么办?我目前知道可以传参数,但是如果参数量很大,就会不方便,特别是在构造函数以外的地方使用这些变量,那么子窗口的类中还要再定义这些变量一次,更加麻烦。还有一个办法就是将主窗口中的要被共用的变量定义成静态的,这样的话,同一个命名空间下其他类都能访问,不过定义一大堆静态变量总感觉怪怪的,定义静态方法倒觉得没什么。请问还有别的好方法没有,上面提到的两种办法我总觉得会破坏整体程序结构,为以后的维护和修改带来不便,或许只是我自己心理感觉而已吧。请问大家在实际工作中都是怎么解决的?

反之,母窗口要操纵子窗口,但是仅仅在某个局部函数中拥有子窗口的句柄,比如 ChildFrom cf = new ChildForm(); 这里获得了cf的句柄,但是在别的地方就无法访问这个局部变量了,请问应该怎么做。很多大型软件那么多的窗口控件,它们的数据传送都很自然,可是自己弄起来发现还挺麻烦,不知道都有些什么惯用法。
...全文
1565 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
mengxin_nuaa 2008-12-09
  • 打赏
  • 举报
回复
受益匪浅~~~
iamybj 2007-10-18
  • 打赏
  • 举报
回复
不要共享变量,按照软件工程的经验,尽量减少模块间的耦合性,推荐采用参数。
gui0605 2007-10-18
  • 打赏
  • 举报
回复
静态变量,属性等,方法有很多种
cpw999cn 2007-10-18
  • 打赏
  • 举报
回复
可以设一个Common文件夹,将所有需要用到的变量都放在该文件夹的某个文件(或类)中。

工程开发的时候一般采用这个办法
TonyTonyQ 2007-10-18
  • 打赏
  • 举报
回复
主窗口创建子窗口,可以把主窗口的引用传递给子窗口,这样子窗口就能访问主窗口的所有公开的属性和方法了。
反之,主窗口要操纵子窗口,则建议把子窗口定义成主窗口类中的全局变量,如果子窗口很多,则可以创建子窗口的哈西表等等来方便保存

对于需要全局都要访问的内容,建议单独建议一个Singleton的类来处理。

就想到这些,看看楼下有啥建议?
tao77 2007-10-18
  • 打赏
  • 举报
回复
我一般都是用定义静态变量的方式,静态变量不一定要定义在主窗口中,可以定义一个公共类,用于存储一些公用的静态变量和方法,这样,无论是谁都可以访问到了。

对于局部函数中的窗口,我一般都是用哈希表来存储,哈希表定义为公共静态变量,然后在实例化一个子窗口时,把该子窗口保存到哈希表中,取的时候按键名取出来。

//定义公共变量
public static hashtable a=new hashtable();


//定义子窗口
ChildFrom cf = new ChildForm();
a.add("ChildFrom",cf);

//取子窗口的
ChildFrom cf=a["ChildFrom"] as ChildFrom
eggforever 2007-10-18
  • 打赏
  • 举报
回复
利用分层设计隔离开
自己写一些逻辑的代码 里面的对象存放数据 窗体间通过对象传递这些信息

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧