我在一个多文档窗口MDIP_Main中建立一个新的窗口, Form_Upload,并show出来,然后在 Form_Upload中点击一个按钮弹出新的界面,如下
   private void Search_IT_TASK(string sql)
  {messagebox(sql)}
   
    private void btn_Find_Click(object sender, EventArgs e)
        {
            Form_SearchrRWD wForm1 = new Form_SearchrRWD(); //建立新窗口,在新窗口中调用本窗口的一些方法
            wForm1.ShowDialog(this);
        }而在新窗口Form_SearchrRWD中,我点击一按钮,调用 Form_Upload的方法,代码如下:
        private void btn_OK_Click(object sender, EventArgs e)
        {
            string sql = "....";
            Form_Upload f = (Form_Upload)this.Owner;//异常,无法将类型为“PMS.MDIP_Main”的对象强制转换为类型“PMS.Form_Upload”。
            f.Search_IT_TASK(sql); 
        }
就是在第二个窗口Form_SearchrRWD中的方法,this.Owner他获取的是多文档母窗口的值了,所以有这个错误,而我想得到的是 Form_Upload的实例,从而调用 Form_Upload.Search_IT_TASK(string sql).
大侠救我!!!!!!!!

解决方案 »

  1.   

       Form_SearchrRWD中
            public delegate void ReceiveHandler(string sql);
            public event ReceiveHandler ReceiveOrderOperateCompleted;MDIP_Main中
      private void btn_Find_Click(object sender, EventArgs e)
      {
      Form_SearchrRWD wForm1 = new Form_SearchrRWD(); //建立新窗口,在新窗口中调用本窗口的一些方法
              wForm1.ReceiveOperateCompleted += new ReceiveDetailBase.ReceiveHandler(detail_ReceiveOperateCompleted);
    wForm1.ShowDialog();           }        void detail_ReceiveOperateCompleted(string sql)
            {
                Search_IT_TASK(sql)
            }
      

  2.   

    唉,那么麻烦,我直接用
    private void btn_Find_Click(object sender, EventArgs e)
      {
      Form_SearchrRWD wForm1 = new Form_SearchrRWD(); //建立新窗口,在新窗口中调用本窗口的一些方法
     wForm1.owner= this;
      wForm1.ShowDialog();
      }
    就搞定了