日期:2014-05-18  浏览次数:20918 次

如何使用子窗体来调用父窗体的方法?
我在父窗体中写了一个方法,该方法用来删除父窗体菜单下的一个子菜单项,代码如下:
  public void DelOtherWindow(string windowname )
  {
  foreach (object obj in this.OtherWindows.DropDownItems)
  {
  if (obj.ToString() == windowname)
  {
  this.OtherWindows.DropDownItems.Remove((ToolStripItem)obj);
  break;
  }
  }
  }
子窗体中的代码:
  private void Form2_FormClosed(object sender, FormClosedEventArgs e)
  {
  Main mn = new Main(); //Main为主窗体名
  mn.DelOtherWindow(this.Text);
  }
当子窗体关闭后,并不能如预期那样将父窗体菜单下的一个子菜单项删除。但是在父亲中调用该方法就可以删除。请问这是怎么回事呀?如何实现我的想法呢?请高手不吝赐教。

------解决方案--------------------
把处理的代码都写到主窗体中:

代码段1:
public void DelOtherWindow(string windowname ) 

foreach (object obj in this.OtherWindows.DropDownItems) 

if (obj.ToString() == windowname) 

this.OtherWindows.DropDownItems.Remove((ToolStripItem)obj); 
break; 


}

代码段2:
Form2 f=new Form2();
f.FormClosed+=new FormClosedEventHandler(Form2_FormClosed);
f.Show(this);//or f.ShowDialog(this);

代码段3:
private void Form2_FormClosed(object sender, FormClosedEventArgs e)

this.DelOtherWindow((object as Form).Text); 
}
------解决方案--------------------
嘿嘿 是楼上的写法正确 
我那样多余了 直接绑定到FormClosed就可以了