1.从窗体向主窗体发送消息
1.在主窗体中创建委托
2.主窗体中声明委托的方法
3.从窗体调用
代码如下:
/// <summary>
/// 主窗体
/// </summary>
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Form2 obj = new Form2();
//将从窗体的委托变量和主窗体的对应方法关联
obj.msgSender = this.Receiver;
obj.Show();
}
private void Receiver(string counter)
{
this.lblCount.Text = counter;
}
}
/// <summary>
/// 声明委托
/// </summary>
/// <param name="counter"></param>
public delegate void ShowCounter(string counter);
//从窗体
public Form2()
{
InitializeComponent();
}
//根据委托创建委托对象
public ShowCounter msgSender;
private int counter = 0;
private void button1_Click(object sender, EventArgs e)
{
counter++;
if (msgSender != null)
{
msgSender(counter.ToString());
}
}
2.主窗体向从窗体发送信息(广播)
//主窗体
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Frm01 obj1 = new Frm01();
Frm02 obj2 = new Frm02();
Frm03 obj3 = new Frm03();
this.msgSender += obj1.Receicee;
this.msgSender += obj2.Receicee;
this.msgSender += obj3.Receicee;
obj1.Show();
obj2.Show();
obj3.Show();
}
public ShowCounter msgSender;
private int counter = 0;
private void button1_Click(object sender, EventArgs e)
{
counter++;
//同时发送消息
this.msgSender.Invoke(counter.ToString());
}
private void button2_Click(object sender, EventArgs e)
{
counter = 0;
this.msgSender.Invoke("0");
}
}
public delegate void ShowCounter(string counter);
从窗体
public partial class Frm01 : Form
{
public Frm01()
{
InitializeComponent();
}
/// <summary>
/// 接收委托传递的信息
/// </summary>
/// <param name="counter"></param>
public void Receicee(string counter)
{
this.lblCount.Text = counter;
}
}