winform中子窗体如何调用父窗体中的某个方法
父窗体 pForm:父窗体中有一个方法loadwebName(),该方法中引用窗体上的控件用于数据绑定,
子窗体 cForm:我想在子窗体的button事件下调用方法loadwebName().
我在网上查了些资料,文章都是大都是相互转载的,通用方法是设置公共属性(本例应该不能用),在父窗体初始化时候将父窗体传给子窗体(由于窗体间相互调用,不太灵活),然后就是用委托。
求指教,用委托如何实现,或者其它方法也行。
------最佳解决方案--------------------事件委托。。
public partial class b : Form
{
public delegate void RefreshHandler(int num);
public event RefreshHandler RefreshList;
public b()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (RefreshList != null)
{
RefreshList(Convert.ToInt32( dataGridView1.CurrentRow.Cells[0].Value));
}
}
主窗口的
private void button5_Click(object sender, EventArgs e)
{
Form b = new b();
b.RefreshList += new b.RefreshHandler(a_handleRefresh);
b.ShowDialog();
void a_handleRefresh(int num)
{
//查询操作,那个num就是B窗体中数字。。。
}
------其他解决方案--------------------最简单的方法就是打开子窗体 的时候,把父窗体对象也传过去,之后直接可以在子窗体操作父窗体的方法
------其他解决方案--------------------窗体都是对象,想使用其他对象中的东西,只需要找到这个对象。
------其他解决方案--------------------这个我试过,但是我子窗体在其他窗体中也有调用,这样有点乱,我添加了个带有一个参数的构造方法,但是总是提示未将对象引用传递都子窗体
------其他解决方案--------------------还是有点问题:
在cForm中:
public delegate void useParentMethod();
public event useParentMethod showParentMenuscript;
button事件中:
if (showParentMenuscript != null)
{
showParentMenuscript();
}
在pForm中:
form_load事件:
AddWeb add = new AddWeb();
add.showParentMenuscript += new AddWeb.useParentMethod(LoadWebName);
为什么单击cForm中的button不行呢?
------其他解决方案--------------------告人帮忙指点下
------其他解决方案--------------------该怎么处理呢?