有三个不同人写的c# winform项目,我想将他们整和到一个winform中,请问相互之间如何调用,用统一的菜单,
private void mmiFeedReloadList_Click(object sender, System.EventArgs e)
{
这里如何调用其他的winform?
}可以直接调用别的winform的主界面吗?

解决方案 »

  1.   

    如果没个人写的form都是单独的一个项目的话,则每个项目都会编译生成单独的dll,可以采用反射调用dll中的form,方法如下:private void ShowForm(string strDllName,string strFormName)
    {
    Assembly downloadedAssembly;
    Type formType;
    Form downloadedForm;

    try
    {
    downloadedAssembly = Assembly.LoadFrom(strDllName);
    formType = downloadedAssembly.GetType(strFormName);
    downloadedForm = (Form) System.Activator.CreateInstance(formType);
    if (downloadedForm != null && downloadedForm.Name!="")
    {
    downloadedForm.MdiParent = this;
    downloadedForm.Show();
    }
    }
    catch (Exception exShowForm)
    {
    MessageBox.Show("加载窗体出错,错误信息:"+ exShowForm.ToString());
    }
    }
      

  2.   

    如果几个form都在一个工程中,并且在主页面中引用了这几个form的名称空间,则可以用如下方法调用:Form2 objForm=new Form2();
    objForm.MdiParent=this;
    objForm.Show();
      

  3.   

    如果被调用的窗体也是MDI容器窗体,则不能指定被调用窗体的父窗体,也就是
    把 objForm.MdiParent=this; 去掉即可。