假设我要实现这样一个功能.主程序有若干form
form1,form2,form3.....
现在要写一个函数函数void showForm(Form frm)
能实现showForm(form1)就显示form1吗,showForm(form2)就显示form2吗.....?

解决方案 »

  1.   

    class Form1:Form{}
    class Form2:Form{}
    class Form3:Form{}void ShowForm(Form frm) 
    {
       frm.Show();
    }调用的地方
    ShowForm(new Form1); //显示Form1
    ShowForm(new Form2); //显示Form2不过这样做太多此一举了吧
      

  2.   

    可以啊,这个就是多态的特性啊.只要他们是继承自同一个基类的就可以了.就是按照你说的那样就可以,参数是Form类型的.
      

  3.   

    用反射!        /// <param name="GetDllPath">DLL文件路径</param>
            /// <param name="MethodName">你的FORM1,FORM2,的类名称,但是要完整</param>
            public static void ShowFormByName(string GetDllPath,string FormClassName)
            {
                System.Security.Policy.Evidence e = new System.Security.Policy.Evidence();
                Assembly l = System.Reflection.Emit.AssemblyBuilder.LoadFile(GetDllPath);
                object temp = l.CreateInstance(FormClassName, false, BindingFlags.Default, null, null, null, null);
    ((Form)temp).Show();
            }
      

  4.   

         private void showForm(Form frm)
            {            this.mainPanel.Controls.Clear();
                frm.TopLevel = false;
                frm.Dock = DockStyle.Fill;
                frm.FormBorderStyle = FormBorderStyle.None;
                frm.Parent = mainPanel;
                frm.Show();
                this.Text = frm.Text;        }
          showForm(frmStock );
    我这样写为什么不对,帮忙看一下...
    其中(frmStock)是已经存在的一个form窗体!!
      

  5.   

    错误 1 “test.frmStock”是“类型”,但此处被当做“变量”来使用
    报这个错误
      

  6.   

    mainPanel?你想把窗体放在面板里面?好像不行吧,你可以试试MDI
    先把主窗体的IsMdiContainer设置为true
         private void showForm(Form frm)
            {
                frm.MdiParent = this;
                frm.TopLevel = false;
                frm.Dock = DockStyle.Fill;
                frm.FormBorderStyle = FormBorderStyle.None;
                frm.Show();
                this.Text = frm.Text;
            }