namespace
WindowsFormsApplication1
{
public
delegate
void
Handled1();
//定义一个委托
public
partial
class
Form1 : Form
{
public
Form1()
{
InitializeComponent();
}
//需要子窗体执行的方法
private
void
ShowForm()
{
MessageBox.Show(
"Test"
);
}
private
void
button4_Click(
object
sender, EventArgs e)
{
//创建子窗体,并将需要执行的方法传递到子窗体去
Form2 f =
new
Form2(ShowForm);
f.Show();
}
}
}
子窗体代码
namespace
WindowsFormsApplication1
{
public
partial
class
Form2 : Form
{
Handled1 _hand =
null
;
//使用在父窗体中定义的委托
//将委托定义为子窗体的构造器参数
public
Form2(Handled1 hand)
{
InitializeComponent();
_hand = hand;
}
private
void
button1_Click(
object
sender, EventArgs e)
{
_hand();
//调用父窗体中的方法
}
}
}
使用委托相对要麻烦一点,你想简单的话,也可以直接将父窗体传递到子窗体去,像这样改下就行了
Form _form =
null
;
//将基类定义为子窗体的构造器参数
public
Form2(Form
from
)
{
InitializeComponent();
_form =
from
;
}
//调用父窗体的方法就变成这样
_form.ShowForm();
当然父窗体中创建子窗体时,就应该这样了
//创建子窗体,并将父窗体传递到子窗体去
Form2 f =
new
Form2(
this
);
f.Show();