注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天涯倦客的博客

祝福你朋友永远快乐!

 
 
 

日志

 
 

Winform窗体传值的几种方式(属性赋值,委托,事件)  

2013-07-16 15:03:05|  分类: C# |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

百度云盘代码下载:http://pan.baidu.com/share/link?shareid=388120&uk=3627406265

窗体设计:

父窗体:

image

子窗体:

image

方法一:

1、子窗体设置一个父窗体MainFrm属性: public MainFrm MainFrm { get; set; }

2、在父窗体启动子窗体的时候:

ChildFrm frm =new ChildFrm(); 
frm.MainFrm = this;//将当前主窗体的实例传递给子窗体

frm.Show();

3、在子窗体同步按钮中:

//子窗体跟父窗体完全耦合在一块了。 
MainFrm.txtName.Text = this.textBox1.Text;

4、这样即可实现,在子窗体点击同步,子窗体文本框的值会同步到父窗体,但这种方式,子窗体跟父窗体完全耦合在一块了。

方法二、用委托来实现。

委托可以把一个方法作为参数带入另一个方法,在窗体传值中,子窗体需要执行一个方法来改变父窗体的值,

而这个方法,则可以用委托从父窗体传递过来。在父窗体中,声明修改文本框的方法AfterChildChange,在new一个子窗体的时候,将这个方法传递给子窗体。那么当子窗体点击同步按钮时,会执行父窗体的AfterChildChange方法,已达到修改文本框值的目的。

1、在子窗体中设置一个委托类型的属性:

public Action<string> AfterChangeTextDel { get; set; }

2、在子窗体同步按钮中:

if (AfterChangeTextDel != null) 
            { 
                AfterChangeTextDel(this.textBox1.Text);//执行委托 
            }

3、在父窗体中添加方法:

public void AfterChildChange(string text) 
        { 
            txtName.Text = text; 
        }

4、在父窗体启动子窗体按钮:

ChildFrm frm =new ChildFrm();

frm.AfterChangeTextDel = new Action<string>(this.AfterChildChange);

frm.Show();

5、这样也能实现窗体传值,子窗体的委托可以在父窗体 其他地方可以进行直接执行。:解决此问题。微软引入了事件。

三、事件

事件是委托类型的对象。它内部是用委托来实现的,对于事件来说,外部只能注册自己+=,注销自己-=,外界不可以注销其他的注册者,也不能主动触发事件。而委托则无法实现这些控制,因此诞生了事件这话总语法。

事件内部就是一个private的委托和add、remove两个方法

clip_image002

1、在子窗体中声明一个事件:public event Action<string> AfterChangeEvent;

2、在同步按钮中:

if (AfterChangeEvent != null) 
            {

                //事件本身就是委托的一个实例。 
                AfterChangeEvent(this.textBox1.Text); 
            }

3、在父窗体中添加方法:

public void AfterChildChange(string text) 

txtName.Text = text; 
}

4、在父窗体启动子窗体按钮:

ChildFrm frm =new ChildFrm();

frm.AfterChangeEvent += AfterChildChange;

frm.Show();

  评论这张
 
阅读(389)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017