点击下找宝贝

 

C#实现winform窗口之间传值,this、Owner、delegate三种用法

 [ 精彩技术 ]


最近在QQ群里很多童鞋问我窗体之间传值的问题其实在winform开发中窗体传值很简单,下面内容我们将介绍机种方法供大家参考。以下分别介绍C#实现Winform窗口间数据交互的三种方法:修改子窗体的构造函数、给窗体添加属性或方法、通过委托的方法,并提供简单的示例代码供参考。

其实很多童鞋都在学习C/S开发个人也对C/S开发很感兴趣,最近在用dotnetbar和devexpress开发桌面程序深有体会C/S的强大......哈哈这里就部吹牛喽,各位技术大牛自己学习吧,以下的方法是网络上找的完全可用,信不信由你反正哥是经常用。至于那种适合你
那你就自己看着办吧。

1、修改子窗体的构造函数:

  简单地说就是通过修改子窗体Form的构造函数,如下所示:

        public Frm_Child(string Para1, ArrayList List1, TextBox textBox1, Form. Frm_Main)
  {
      InitializeComponent();
  }
上面的例子中,为子窗体Frm_Child添加了4个参数,分别是:字符串Para1,字符数组List1,文本控件textBox1和父窗体Frm_Main,下面简单区分一下它们各自的特点:
<1> 字符串:单向的值传递,在子窗体中不能通过修改此参数的值来间接改变父窗体中的数据。
<2> 字符数组:引用型传递,可以通过将父子窗体中不同的成员变量指向相同的数组,即可实现变更一方,同时更新对方的数据。
<3> 控件:引用型传递,可以通过修改该控件的数据来直接达到控制父窗体中该控件数据的目的。
<4> 窗体: 这个最直接,直接将父窗体传递到子窗体中,我们可以方便地在子窗体中修改父窗体中所有授权为public 的数据。

2、给窗体添加属性或方法:

  获取或设置拥有此窗体的窗体。若要使某窗体归另一个窗体所有,请为其 Owner 属性分配一个对将成为所有者的 窗体的引用。当一个窗体归另一窗体所有时,它便随着所有者窗体最小化和关闭。例如,如果 Frm_Child 归窗体 Frm_Main所有,则关闭或最小化 Frm_Main 时,也会关闭或最小化 Frm_Child。并且附属窗体从不显示在其所有者窗体后面。可以将附属窗体用于查找和替换窗口之类的窗口,当选定所有者窗体时,这些窗口不应消失。若要确定某父窗体拥有的窗体,请使用OwnedForms属性。

  我们可以通过下面的方式来确定这种从属的窗体关系:

          Frm_Child form. = new Frm_Child();
   form.Owner = this;
   form.ShowDialog();  

         或者:
   Frm_Child form. = new Frm_Child();
   form.ShowDialog(this);  
定了从属关系以后,我们就可以通过在Form的load事件中或者通过定义public的属性或者方法来彼此进行数据修改操作,简单操作如下:
   Frm_Main pareForm. = (Frm_Main)this.Owner;  
   this.listData1 = pareForm.ListData2;  

3、通过委托的方法:

  相对以上两种方法来说,这种方法可能较复杂一些,但基本思路是一样的,需要修改的地方如下:

<1> 在Frm_Child.cs中添加委托函数定义:public delegate void SendFun(string str);
<2> 在Frm_Child.cs中添加委托示例:public event SendFun SendToParent;
<3> 在Frm_Child.cs中添加一个按钮,并添加其事件如下:

     private void button1_Click(object sender, EventArgs e)
     {
       if (Send != null)
      {
           Send(this.textBox1.Text);
       }
      }  

<4> 在Frm_Main.cs中添加方法RecvInfo()方法如下:
    private void RecvInfo (string str)
    {
        textBox1.Text = str;
    }  

<5> 在Frm_Main.Designer.cs中的InitializeComponent()方法中添加委托实例定义:
this.myForm.Send += new Example3_Frm_Child. SendFun (RecvInfo);  

通过上面五步操作,即可达到Form间的通信的目的。
以上介绍的就是C#实现Winform窗口间数据交互的三种方法,希望对你了解C#实现Winform窗口间数据交互有所帮助。有兴趣可以参加 深圳ASP.NET培训、宝安ASP.NET培训,沙井ASP.NET培训,爱尚ASP.NET培训。

相当给力的文章配置........
  • 名 称:C#实现winform窗口之间传值,this、Owner、delegate三种用法
  • 官 方:-
  • 版 本:1.0
  • 格 式:web
  • 大 小:100.000
  • 发布者:爱尚
  • 所属类别:0
  • 标 签:C#,窗体传值,进阶
  • 流行指数:100
  • 生产日期:公元2011-10-19
  • 下载地址:Label
你应该还喜欢看看这些东东:(*^__^*) 嘻嘻
留下个脚印吧,证明你来过....................................
暂无留言................
留下你的大名(*必填哦) 留言类容
  设置头像
E-Mail(*必填哦)
设置头像
你的网站(选填)
  (Ctrl + Enter 快速提交)                                       

广告也精彩

Ads are also wonderful

近期被盯梢的文章

Has been stalking the article

推荐精彩

Recommend fascinating

网友的疯狂留言

User's crazy message
Gravatar 爱尚 放话:
过期的话你可以把地址保存到你的快盘在下载就好了
Gravatar 游客 放话:
到期了。。。。。
Gravatar 小枫 放话:
谢谢呀!学习了不少东西。。。。顶你
Gravatar 飞刀侠客 放话:
看了下,很不错的说。。。。哈哈
Gravatar 学才 放话:
学习学习,感谢老师的教程呀
Gravatar sdf 放话:
sdf
Gravatar sdf 放话:
sdf
Gravatar 么么 放话:
哈哈,群座发视频啦学习学习
Gravatar 悠悠 放话:
貌似还不错的说
Gravatar AAA 放话:
给力

被广泛搜索的标签

Tag Extensive

JOY的强有力的美太太的微型日志

Mrs. JOY strong U.S. micro log

很好很好的赞助商

Has been stalking the article

Contact
Navigation
  • 站点地图
  • 搜索内容
  • 文章分类
  • 手气不错
Links

爱尚,是根据 "爱上" 的谐音所建立的一个技术\软件等分享网站,网路上的朋友不仅仅爱上了代码、程序、软件、设计、........ 站长 JOY 是一位在互联网上跑来跑去的电脑爱好者,本站的建立会与大家一起分享互联网的精彩和技术经验!


注:本站部分文章资源均来自互联网,如侵犯你的版本请来信说明.....谢谢!
本站还在不断的夹紧日期赶工中..........................
版权归 爱尚 所有 | 粤ICP备10066067号 | 本站使用 主机 服务 | 投放广告