Winform利用委托进行窗体间的传值
在form1.cs中
1.委托的定义
//定义一个委托
public delegate void AddUsrEventHandler(object sender, AddUsrEventHandlerArgs e);
2.事件的定义
//委托实例
public event AddUsrEventHandler UserAdded;
3.事件的引发
//按下btn之后触发事件
this.UserAdded(this,new AddUsrEventHandlerArgs(user));
在form2.cs中
1.登记事件
//登记一个事件
frm.UserAdded += new AddUsr.AddUsrEventHandler(frm_UserAdded);//按两下TAB键会自动生成
2.事件处理
//事件处理函数(回调函数)
void frm_UserAdded(object sender, AddUsr.AddUsrEventHandlerArgs e)
{
//throw new NotImplementedException();
User user = e.Current;
ListViewItem item = new ListViewItem(new string []{user.UserName,user.PassWorld,user.Memo});
listViewUsr.Items.Add(item);
}
整个demo实现代码为
form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace FrmLogin
{
public partial class AddUsr : Form
{
//定义一个委托
public delegate void AddUsrEventHandler(object sender, AddUsrEventHandlerArgs e);
//委托实例
public event AddUsrEventHandler UserAdded;
public AddUsr()
{
InitializeComponent();
}
private void buttonOK_Click(object sender, EventArgs e)
{
if (UserAdded != null)
{
User user =new User();
user.UserName = this.textBoxUsrName.Text.Trim();
user.PassWorld = this.textBoxPaswd.Text;
user.Memo = this.textBoxMemo.Text.Trim();
//按下btn之后触发事件
this.UserAdded(this,new AddUsrEventHandlerArgs(user));
}
}
//传递参数的类型
public class AddUsrEventHandlerArgs : EventArgs
{
public User Current {set; get;}
public AddUsrEventHandlerArgs(User user)
{
this.Current = user;
}
}
}
}
form2.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace FrmLogin
{
public partial class FrmUsrList : Form
{
public FrmUsrList()
{
InitializeComponent();
}
private void btnAdd_Click(object sender, EventArgs e)
{
AddUsr frm = new AddUsr();
//1.登记一个事件
frm.UserAdded += new AddUsr.AddUsrEventHandler(frm_UserAdded);//按两下TAB键会自动生成
frm.ShowDialog();
}
//2.事件处理函数(回调函数)
void frm_UserAdded(object sender, AddUsr.AddUsrEventHandlerArgs e)
{
//throw new NotImplementedException();
User user = e.Current;
ListViewItem item = new ListViewItem(new string []{user.UserName,user.PassWorld,user.Memo});
listViewUsr.Items.Add(item);
}
}
}
实现效果
form1.cs form2.cs

Winform利用委托进行窗体间的传值的更多相关文章
- Winform中利用委托实现窗体之间的传值
点击打开按扭,打开传输值窗体 public partial class Form1 : Form { public Form1() { InitializeComponent(); } public ...
- winform 利用委托实现窗体传值
父窗体:Form1 ,有个 textbox1.text ,有个button1 子窗体:Form2 ,有个 textbox1.text ,有个button1 修改Form1 的textbox1. ...
- winform利用委托delegate进行窗体间通信
前段时间学习委托,感觉很模糊的样子,也做过许多实例,但是项目中一直没有用到,今天在项目中遇到一个很简单的例子,现在拿出来,做一个简单的记录. 要求:将弹出框里勾选的内容返回到主面板上. 工具:委托. ...
- winform利用委托delegate进行窗体间通信,相同标题已经存在??
前段时间学习委托,感觉很模糊的样子,也做过许多实例,但是项目中一直没有用到,今天在项目中遇到一个很简单的例子,现在拿出来,做一个简单的记录. 要求:将弹出框里勾选的内容返回到主面板上. 工具:委托. ...
- C# Winform 窗体传值 利用委托 子窗体传值给父窗体
常用的Winform窗体传值有两种方式. 1.更改Form.designer.cs文件,将控件的设为Public,供子窗体访问. 在designer.cs文件的最后,找到你的控件声明. private ...
- .NET开发之窗体间的传值转化操作
DOTNET开发之窗体间的传值转化操作 好想把自己最近学到的知识写下来和各位朋友分享,也希望得到大神的指点.今天终于知道自己要写点什么,就是关于WPF开发时简单的界面传值与简单操作. 涉及两个界面:一 ...
- C#利用事件与委托进行窗体间传值简单小例子
本篇博客是利用C#委托与事件进行窗体间传值的简单小例子 委托与事件的详细解释大家可以参照张子阳的博客: http://www.tracefact.net/CSharp-Programming/Dele ...
- C# 利用委托事件进行窗体间的传值(新手必看)
引言: 窗体间传值是每个学习WinForm新手的常见问题,最初级的方法就是 在窗体中先获取到要接受值窗体.然后通过.得到某个空间或者属性,直接赋值,这个需要接收放的窗体属性或者空间必须是public ...
- WinForm窗体间如何传值
窗体间传递数据,无论是父窗体操作子窗体,还是子窗体操作符窗体,有以下几种方式: 公共静态变量: 使用共有属性: 使用委托与事件: 通过构造函数把主窗体传递到从窗体中: 一.通过静态变量 特点:传值是双 ...
随机推荐
- 2017中国大学生程序设计竞赛-哈尔滨站 H - A Simple Stone Game
A Simple Stone Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Ot ...
- HDOJ.1263 水果(map)
水果 点我跳转到题面 点我一起学习STL-MAP 题意分析 给出多组测试数据,每组数据有多条信息.分别是水果种类,地点,和水果数目.每组信息要按照样例输出,并且输出要按照地点->水果种类的字典序 ...
- B树,B+树,B*树简介
B树(有些人也叫B-树) 是一种多路搜索树 : 1.定义任意非叶子结点最多只有M个儿子:且M>2: 2.根结点的儿子数为[2, M]: 3.除根结点以外的非叶子结点的儿子数为[M/2, M]: ...
- 【状压DP】【P3959】【NOIP2017D2T2】宝藏
Description 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 $n$ 个深埋在地下的宝藏屋, 也给出了这 $n$ 个宝藏屋之间可供开发的$ m$ 条道路和它们的长度. 小明决心亲自前往挖 ...
- 自动清理N天前的二进制日志
这里以自动清理5天前的二进制日志为例(做了同步或依赖于二进制日志备份的请慎用): 以root身份登录数据库,执行以下命令: ; 首次设置expire_logs_days参数后需要执行flush log ...
- OS开发中的事件处理(二)-事件传递,响应者链条
事件处理的事件传递 简介: 发生触摸事件后,系统会将该事件加入到一个由UIApplication管理的事件 队列中,UIApplication会从事件队列中取出最前面的事件,并将事件分发下去以便处理, ...
- 初学VS的目录结构
工程目录下各文件的含义 一般大部分的文章可能介绍到上面就算结束了,但我这还没有.创建工程产生的各个文件都你知道是什么用的吗? 如果你是一个初学者,你可能会不知道(老手请跳过本文).Ok,我就带你逐一了 ...
- DOM基本代码二
------------------------------- <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xh ...
- ACM2066
题目原址:http://acm.hdu.edu.cn/showproblem.php?pid=2066 大神必须飘过,我在这个题目里面学到了太多太多了.我提交了十六次,错了十二次,反复了这么久才解决内 ...
- Linux系统查看系统信息
1. CPU # lscpu # cat /proc/cpuinfo //可以知道每个cpu信息,如每个CPU的型号,主频等 2. 内存 # free -m # cat /proc/meminfo / ...