首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

winform中子窗体怎么调用父窗体中的某个方法

2012-12-28 
winform中子窗体如何调用父窗体中的某个方法父窗体 pForm:父窗体中有一个方法loadwebName(),该方法中引用

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不行呢?

[其他解释]
告人帮忙指点下
[其他解释]
该怎么处理呢?

热点排行