不传参数
第二窗口:
public partial class Form2 : Form
{
/// <summary>
/// 定义委托
/// </summary>
public delegate void testDelegate();
/// <summary>
/// 定义委托事件
/// </summary>
public event testDelegate refreshForm;
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//执行委托事件
//具体执行的到底是什么,form2并不关心,
//如果你订阅了我的refreshForm事件,
//那么我执行refreshForm的时候你就必须响应
refreshForm();
this.Close();
}
}
第一窗口:
private void button1_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
//这里订阅Form2的refreshForm()事件,具体你怎么执行我不管,
//我把我的RefreshForm1()绑定在了你的refreshForm()事件上,
//不管你在何时何地执行了你的refreshForm()事件,
//那么我的refreshForm1()事件就会跟着执行,因为我已经抱住你的大腿了!
f.refreshForm += new Form2.testDelegate(RefreshForm1);
f.ShowDialog();
}
public void RefreshForm1()
{
button1.Text = "Good job!";
}
传递参数:----------------------------------------------------------------------------------
窗口1:
public
partial
class
Form1 : Form
{
public
delegate
void
delegateRef(
int
a,
string
b,
int
c);
public
Form1()
{
InitializeComponent();
}
private
void
button1_Click(
object
sender, EventArgs e)
{
delegateRef dlg =
new
delegateRef(Get);
Form2 f2 =
new
Form2(dlg);
f2.Show();
}
private
void
Get(
int
a,
string
b,
int
c)
{
label1.Text =
"a="
+ a +
",b="
+ b +
",c="
+ c;
}
}
窗口2:
public
partial
class
Form2 : Form
{
private
Form1.delegateRef dlg;
public
Form2(Form1.delegateRef dlg)
{
InitializeComponent();
this
.dlg = dlg;
}
private
void
button1_Click(
object
sender, EventArgs e)
{
this
.dlg(4,
"abc"
, 65);
}
}