WinForm中窗体间的数据传递(二)

本文介绍了一种子窗口通过事件向父窗口传递数据的方法。利用委托和事件,实现在不关闭窗口的情况下完成数据交互。文章详细展示了事件定义、响应及数据传递的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过子窗口向外引发一个事件,父窗口去实现该事件,我们可以再不关闭父窗口和子窗口的情况下进行数据的传输显示

思路:在子窗口“添加用户”的中通过点击"添加用户",会动态的向外引发一个事件,通过该事件,我们可以进行数据传递

在其他窗口中,可以来响应该事件

其中,子窗口只负责向外引发一个事件,将事件的实现方法委托给别的对象,至于事件具体如何做处理,子窗口是不关心的,这一点体现了松耦合的一个设置

 

涉及到的知识点:

1.如何定义一个事件?

public delegate void UserAddEventHandler();

public event UserAddEventHandler UserAdd;

2.如何响应子窗口引发出来的事件?

userDialog.UserAdd += userDialog_UserAdd;//将UserAdd的实现委托为userDialog_UserAdd方法

void userDialog_UserAdd()
{
  //方法体
}

3.子窗口中如何向父窗口传递数据?

通过delegate的声明中,添加两个参数:

public delegate void UserAddEventHandler(object sender,UserEventArgs e);

其中UserEventArgs是一个继承自EventArgs的类 

public class UserEventArgs : EventArgs
    {
        public User currentUser { get;set;}
        public UserEventArgs(User user) 
        {
            this.currentUser = user;
        }
    }
从而,在向外引发事件的时候,将User的信息通过第二个参数传递出去 

private void button1_Click(object sender, EventArgs e)
        {
            //向外引发一个事件
            if(UserAdd!=null)
            {
                User user = new User();
                user.UserName = textBox3.Text;
                user.PassWord = textBox4.Text;
                UserAdd(this,new UserEventArgs(user));
            }
        }
在父窗口的userDialog_UserAdd方法中,就可以对接收到的数据进行处理
private void 添加用户ToolStripMenuItem_Click(object sender, EventArgs e)
{
  FrmUser userDialog = new FrmUser();
  //将UserAdd的实现委托为userDialog_UserAdd方法
  userDialog.UserAdd += userDialog_UserAdd;

  userDialog.ShowDialog(); 
}

void userDialog_UserAdd(object sender,UserEventArgs e)
{
  MessageBox.Show(e.currentUser.UserName);
}

原创文章,转载请注明出处:http://www.cnblogs.com/hongfei/archive/2012/12/17/2822203.html

转载于:https://www.cnblogs.com/hongfei/archive/2012/12/17/2822203.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值