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;
}
}