CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  .NET Framework

如何在窗口间传递数据

楼主gattso()2006-07-04 19:32:08 在 .NET技术 / .NET Framework 提问

我是通过构造函数的参数传递实现的,感觉这样很不爽,而且有些问题,就是Form的资源释放也不太方便,我刚搞.net一个来月,不知道大侠们是如何实现的.  
   
  比如我有个Form1里面有个button,按下button就new一个Form2,让用户输入一个string,按下Form2里的button,就关掉Form2,(最好能此时就dispose掉)让Form1得到用户输入的数据.  
   
  还有如何让Form2关掉这个事件的同时更新Form1?  
  我是通过在Form2的buttonClicked事件里调用Form1.refresh()的,还是通过参数传递过来的Form1对象..能不能通过焦点或其他的东西让Form1直接得到Form2的Closed事件?  
   
  大侠们处理类似问题时一般怎么实现的?  
  有例子看看更好,记不清函数名之类的写伪代码看看也行,说思路也可以..谢谢了 问题点数:20、回复次数:9Top

1 楼sailing_hang(东航)回复于 2006-07-05 01:06:50 得分 0

赫赫   ,我知道的也是用构造函数Top

2 楼sp1234(asp.net不是一个语言,是一个操作系统)回复于 2006-07-06 11:03:41 得分 0

两个button都应该触发Event给main()所在的对象(两个Form所在的对象),由事件处理程序处理这个事件,将一个Form通知的数据传递给另一个Form的指定方法。Top

3 楼sp1234(asp.net不是一个语言,是一个操作系统)回复于 2006-07-06 11:08:31 得分 0

如果Form2的生命期是由Form1控制的,那么Form2就是用Event通知Form1(此时在Event参数中传递上来数据),然后Form1关闭Form2。Form2通知Form1刷新也是一样道理。Form2并不知道自己被谁控制,Form2并不知道Form1,Form1才知道Form2,只是知道通知自己的所有控制对象刷新和关闭事件就行了。  
   
  如果复杂和灵活一点,Form1和Form2都互相不知道,用main所在的那个主控对象来协调所有Form,有时能形成更加抽象、强大的控制逻辑。Top

4 楼sp1234(asp.net不是一个语言,是一个操作系统)回复于 2006-07-06 11:09:58 得分 0

只是知道通知自己的所有控制     -->     Form2只是知道通知自己的所有控制Top

5 楼bumm(......)回复于 2006-07-06 14:31:53 得分 0

在Form1中定义Form2的Disposed事件:  
  Form2.Disposed   +=   new   System.EventHandler(Form2_Disposed);  
  在Form2_Disposed中执行你想要的操作。Top

6 楼waywander(第三只眼)回复于 2006-07-07 16:14:59 得分 0

窗口之间信息传递   ,除了构造函数以外,还可以设置子窗口的owner  
  比如主窗口   form1   button点击事件激发的时候  
  form2   f2=   new   form2();  
  f2.Owner   =   this;  
  在子窗口的button点击事件  
  就可以  
  form1   f1   =   (form1)this.Owner;  
  然后就可以调用form1的公有方法Top

7 楼zhaojiang(不会飞的鱼)回复于 2006-07-07 17:33:42 得分 0

方法:  
  1.定义公用变量,   这样可以通过实例的公有变量访问.  
  2.定义方法,用参数传递,   推荐这种方法,这样不会破坏类的完整性,降低传递值所带来的偶合性.  
  3.另外,也可以定义一个静态类,   在里面定义静态变量,   两个窗口都可以访问   些类的静态变量.Top

8 楼sandsboy(竹子)回复于 2006-07-08 20:00:22 得分 0

减少耦合度的方法  
  public   delegate   void   NotifyHandle(string   s);  
  在form2中提供一个NofifyHandler类型的接口(Notify),然后在   f   =   new   form2();后加f.Notify=你的方法(规格与NotifyHander一样)在form2的buttonclicked中加   if(Notify!=null){Notify(textbox1.Text);}  
  Top

9 楼baoxue_tin()回复于 2006-07-21 12:38:46 得分 0

各位高手能不能说详细点?  
  我是新手,也在为这问题烦恼.  
  谢过!Top

相关问题

关键词

得分解答快速导航

  • 帖主:gattso

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo