工作了很久,一直没有很深入的了解C#中的委托和事件。
来到新公司,主要的工作就是使用委托和事件操作数据。一下子不知道该如何下手。各方请教大神,得出下面的方法
1. 在A控件中定义一个事件,B控件触发的时候,调用一下这个事件。然后再在A的父级控件中写方法,+=的方式把方法委托给A的事件就行了
窗体:
private void Form1_Load(object sender, EventArgs e)
{
UC_Content content = new UC_Content();
content.C_Clicked += new Action(content_C_Clicked);
content.Margin = new Padding(40);
this.groupBox1.Controls.Add(content);
}
void content_C_Clicked()
{
MessageBox.Show("C点击了");
}
大控件
private void UC_Content_Load(object sender, EventArgs e)
{
UC_Detail detail = new UC_Detail();
detail.Margin = new Padding(30);
detail.Click += new EventHandler(detail_Click);
this.panel1.Controls.Add(detail);
}
void detail_Click(object sender, EventArgs e)
{
if(C_Clicked!=null)
{
C_Clicked();
}
}
public event Action C_Clicked;
private void Form1_Load(object sender, EventArgs e)
{
UC_Content content = new UC_Content();
content.C_Clicked += new Action(content_C_Clicked);
content.Margin = new Padding(40);
this.groupBox1.Controls.Add(content);
}
void content_C_Clicked()
{
MessageBox.Show("C点击了");
}
大控件
private void UC_Content_Load(object sender, EventArgs e)
{
UC_Detail detail = new UC_Detail();
detail.Margin = new Padding(30);
detail.Click += new EventHandler(detail_Click);
this.panel1.Controls.Add(detail);
}
void detail_Click(object sender, EventArgs e)
{
if(C_Clicked!=null)
{
C_Clicked();
}
}
public event Action C_Clicked;