父窗体 pForm:父窗体中有一个方法loadwebName(),该方法中引用窗体上的控件用于数据绑定,
子窗体 cForm:我想在子窗体的button事件下调用方法loadwebName().
我在网上查了些资料,文章都是大都是相互转载的,通用方法是设置公共属性(本例应该不能用),在父窗体初始化时候将父窗体传给子窗体(由于窗体间相互调用,不太灵活),然后就是用委托。
求指教,用委托如何实现,或者其它方法也行。

解决方案 »

  1.   

    事件委托。。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窗体中数字
    }
      

  2.   

    还是有点问题:
    在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不行呢?