private void superserach_Click(object sender, EventArgs e)
        {
            销售单定位 frm = new 销售单定位();
            frm.MdiParent = this.MdiParent;
            //frm.WindowState = FormWindowState.Normal; //不要以最大化出现
            frm.ShowDialog();                    
        }
显示frm.MdiParent = this.MdiParent;出错了,
我改成如下
private void superserach_Click(object sender, EventArgs e)
        {
            销售单定位 frm = new 销售单定位();          
            //frm.WindowState = FormWindowState.Normal; //不要以最大化出现
            frm.ShowDialog();                    
        }
出来的销售单定位窗体又不在MDI窗体内,变成一个独立的窗体,任务上出现两个窗体
有没有办法frm.ShowDialog(); 出来,但是又在MDI窗体内呢.

解决方案 »

  1.   

    子窗体.Controls.Add(frm);
    frm.TopMost = true;
    frm.Show();
    这样子试一试
      

  2.   

                 销售单定位 frm = new 销售单定位(); 
               frm.MdiParent = this;
                frm.ShowDialog();       
      

  3.   

    MDI 中 不能用ShowDialog()  只能用Show();
      

  4.   

    mdi中本来就不能应用ShowDialog,
    在你的子窗体中ShowDialog出来有什么不妥么?如果你非要实现ShowDialog的功能(不能对其他窗口操作),而又偏偏想在任务栏只有一个图标的话似乎没啥意义啊。
    当然你可以做一个控件(自定义的,做成你窗口的样子),然后在你想showDialog的时候把这个控件添加在主窗体上,这样就一个图标,大小合适的时候其他成体也都看不到,操作不到了,当然它不能移动(除非你自己写代码),不过觉得还是在你子窗体上直接showDialog好些,所有人都是这样用的参照ps等编辑软件,都是这种形式