1.在主窗体的类外声明了委托,由于属性是公共并且和子窗体是在同一个命名空间,因此,子窗体可以据此创建一个委托对象。
2.主窗体根据声明的委托创建方法。
3.在子窗体类中创建委托对象,当单击子窗体的Button之后,计数值counter通过委托对象msgSender传递。
4.在主窗体类中,将委托方法和子窗体类中委托对象进行关联,这样,在步骤3中msgSender会直接使用主窗体类中的委托方法。
主窗体:
namespace WindowsFormsDelagetMultiWindow
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
FormSub objFrm = new FormSub();
//将从窗体的委托变量和主窗体方法关联
objFrm.msgSender = this.Receiver;
objFrm.Show();
}
//[2]委托方法
private void Receiver(string counter)
{
this.label2.Text = counter;
}
}
//[1]声明委托
public delegate void ShowConuter(string counter);
}
子窗体:
namespace WindowsFormsDelagetMultiWindow
{
public partial class FormSub : Form
{
public FormSub()
{
InitializeComponent();
}
//[3]根据委托创建委托对象
public ShowConuter msgSender;
private int counter = 0;
private void button1_Click(object sender, EventArgs e)
{
counter = counter + 1;
if (msgSender != null)
{
msgSender(counter.ToString());
}
}
}
}