利用委托事件,可以在B窗体中通过创建的委托事件对象来引用A窗体中的方法,以达到对A窗体进行操作的目的。
a. 如果用New方法,是创建一个新的、与原对象平行的对象。
b. 此方法对于主窗体特别简单有效
c. 对于别的窗体,也可以通过创建一个生命周期特别大的对象来进行跨窗体操作,但其所受限制本人
未曾实验。且对象较多会影响程序运行。
1.定义委托声明(在类外定义,方便重载)
public delegate void DisplayF(); //声明委托事件
2.在主窗体添加被委托事件
public partial class Form1 : Form
{
//委托用事件
public void DisPlayFTTT()
{
this.Visible = true; //显示
}
Form2 f2 = null; //此处不可写Form f2 = null; 会导致无法找到f2.dispF1。
//点击该按钮,跳至副窗体,并隐藏主窗体
private void Bt1_Click(object sender, EventArgs e)
{
f2 = new Form2();
f2.Show();
f2.dispF += new DisplayF(DisPlayFTTT); //添加被委托事件[new 委托名(事件名)]
this.Visible = false; //隐藏
}
}
3.在副窗体创建委托事件对象
public partial class Form2 : Form
{
public event DisplayF dispF; //创建委托事件对象
//点击该按钮,关闭本窗体并打开主窗体
private void Bt2_Click(object sender, EventArgs e)
{
dispF();
this.Close();
}
}