首先定义一个继承EventArgs类的类,其中包涵自己要传递的数据,类中的属性都是用来传递数据的:
代码如下 | 复制代码 |
EventArgs public class FormulaSetEvent:EventArgs { public string _name { set; get; } public string _formula { set; get; } public int _select { set; get; } public FormulaSetEvent(string name, string formula,int select) { this._select = select; this._name = name; this._formula = formula; } } |
然后定义委托类型,定义委托事件(写在要触发事件的窗体中):
代码如下 | 复制代码 |
//定义委托类型 public delegate void DialogEventHandler(object sender, FormulaSetEvent e); //定义委托事件 public event DialogEventHandler ReturnDataEvent; |
然后开始编辑触发事件:
代码如下 | 复制代码 |
//应用 private void button2_Click(object sender, EventArgs e) { if (ReturnDataEvent != null) { ReturnDataEvent(this,new FormulaSetEvent(this.comboBox1.Text,this.richTextBox1.Text,select)); } } |
再然后要在主窗体中注册事件:
代码如下 | 复制代码 |
private void button1_Click(object sender, EventArgs e) { Form2 form = new Form2(); form.ReturnDataEvent += new Form2.DialogEventHandler(f2_Event); form.ShowDialog(); } |
上面的f2_Event为事件响应的函数:
代码如下 | 复制代码 |
void f2_Event(object sender,FormulaSetEvent e) { this.TextBox1.Text=e._name; } |
在此就可以获取Form2中的值,并且能在Form2不关闭的情况下修改主窗体的内容 属性;
有时在做“应用”这个按钮功能是会用到
特写一小例子,共享之。
所谓观察者,就好比警察抓小偷时放出的眼线,眼线观察小偷,一有行动,立刻反应给警察。
现有FrmMain(警察),FrmChild1,FrmChild2(姑且当作两个小偷吧),一个定义委托和事件的类MiddleModule,它就是观察者。
且看代码:
代码如下 | 复制代码 |
C# code using System; namespace Observer public static void SendMessage(object sender, object msg)
|
小偷1:
C# code
代码如下 | 复制代码 |
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; using Observer; namespace WinObserver { public partial class FrmChild1 : Form { private static FrmChild1 frmChild1 = null; private FrmChild1() { InitializeComponent(); MiddleModule.eventSend += new Send(MiddleModule_eventSend); } void MiddleModule_eventSend(object sender, object msg) { FrmMain frmMain = sender as FrmMain; if (null != frmMain) { this.lblMsg.Text = msg.ToString(); } } public static FrmChild1 CreateInstance() { if (null == frmChild1) { frmChild1 = new FrmChild1(); } return frmChild1; } private void btnSendBack_Click(object sender, EventArgs e) { //由Observer模块传递数据 if (String.IsNullOrEmpty(this.txtMsg.Text)) { MiddleModule.SendMessage(this, String.Empty); } else { MiddleModule.SendMessage(this, this.txtMsg.Text); } } } } |
小偷2:
代码如下 | 复制代码 |
C# code namespace WinObserver /// void MiddleModule_eventSend(object sender, object msg) public static FrmChild2 CreateInstance() |
茶杯头甜蜜终章dlc 官方手机版v1.0.0.3
下载火柴人传说暗影格斗内置菜单 最新版v3.0.1
下载荒野乱斗测试服 安卓版v61.10.3
下载荒野乱斗彩虹服 安卓版v61.10.3
下载寒霜启示录 安卓版v1.25.10
寒霜启示录是一款生存模拟游戏,不少玩家可能对于末日都有着自己
末日城堡免广告版 安卓最新版v0.7.1
末日城堡免广告版是一款非常好玩的模拟经营类游戏,内部可以不看
甜蜜人生模拟器 最新版v1.4.5
甜蜜人生模拟器是一款非常好玩的模拟恋爱手游,玩家在这里能够对
武器锻造师内置功能菜单 v10.4
武器锻造师内置菜单版是游戏的破解版本,在该版本中为玩家提供了
开放空间overfield 安卓版v1.0.5
开放空间Overfield是一款箱庭养成经营手游,让你在广阔