父窗体点击btnAdd打开窗体A,在窗体A中完成操作后(点击确定按钮),返回数据,并打开B窗体我的实现代码:
A窗体:
private void btnOK_Click(object sender, EventArgs e)
        {
            if (!DoValid()) return;
            string str = "";
            foreach (string strSpNo in strSpPlanArr)
            {
                str = str + strSpNo + ",";
            }            str = str.TrimEnd(',');
            PlanSelectedEvent(this, new PlanSelectedEventArgs { spPlanNoList = str });
        }
父窗体: private void btnAdd_Click(object sender, EventArgs e)
        {
            frmPlanSelect.Width = 175;
            frmPlanSelect.ReferForm = this;
            frmPlanSelect.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
            frmPlanSelect.MaximizeBox = false;
            frmPlanSelect.ShowDialog();
        }        private void onPlanSelected(object sender, PlanSelectedEventArgs e)
        {
            strSpNoList = e.spPlanNoList;
            frmPlanSelect.Close();
            ShowEditForm();
        }
        /// <summary>
        /// 显示编辑页
        /// </summary>
        /// <param name="iSpID"></param>
        void ShowEditForm()
        {
            frmCharegeAgainsetEdit frm = new frmCharegeAgainsetEdit();
            int iwidth = (int)((float)Screen.PrimaryScreen.WorkingArea.Width * 0.9F);
            if (iwidth > 1200) iwidth = 1200;
            frm.Width = iwidth;
            frm.strSpNoList = strSpNoList;
            frm.ReferForm = this;
            frm.ShowDialog();
        }
    }
 private void frmStoreChargeAgainst_Load(object sender, EventArgs e)
        {
            frmPlanSelect.PlanSelectedEvent += new frmChargeAgainstPlanSelect.PlanSelectedEventHandler(onPlanSelected);
        }结果是窗体B能正常打开了,但A窗体并没有我想要的关闭掉。在线等啊~~WinForm

解决方案 »

  1.   

    换成frm.Show(); 这个跳出看看。
      

  2.   

    感觉肯定管不了的,两个线程的事情,怎么可能关呢
    首先你这么传递数据就有问题,太麻烦了你为何不做一个全局的类呢,然后把需要传递的数据赋给全局值点击ok返回dialogue.result  ok  来判断是否点击了确定按钮比你这样简单都了
      

  3.   

    换成show确实可以的,但是,这样子就不是那种模态的玩意了
      

  4.   

    if(A.ShowDialog()==DialogResult.OK)
    {
       A.返回的数据
       B.ShowDialog()
    }
      

  5.   


    首先你这么传递数据就有问题,太麻烦了你为何不做一个全局的类呢,然后把需要传递的数据赋给全局值点击ok返回dialogue.result  ok  来判断是否点击了确定按钮比你这样简单都了
    那如何才能达到这种效果呢?
    +1