有2个窗体,先点击第一个窗体,然后传给第2个窗体 它的NAME 值,然后第2个窗体上有个BUTTON ,获取第一个窗体的NAME 值。点击BUTTON ,并ShowDialog(); 第1个窗体是动态的。可能是FORM1  也可能是FROM 2 。不固定
还要有动态传参,要传一个第一个窗体的NAME到第2个窗体,求哪位高手~~~~~

解决方案 »

  1.   

    我现在在第1个窗口里         Object[] obj = new object[10];
                obj[0] = (obj
    ect)this;            Form1 frm=new Form1 (obj);
                frm.ShowDialog();用这个方法把该Form 传过去了 
    在第2个窗口里也获取了 
    但是 该怎么实例呢?  比如第一个窗体是FROM2 那么应该是Form2 from2=new Form2();
    from2.showDialog();现在这个FROM2 是动态的 该怎么写? 不能写死、、、
    我在第2个窗体也用OBJECT[] 数组接受了可是我不会实例那个FORM 
      

  2.   

    那就写个分支,利用flag根据不同的情况,new不同的Form() if ( "1".Equals(FromFlag) ==true)
                {
                    Form1 frm = new Form1();
                }
                else {
                    Form2 frm = new Form2(); 
                }
      

  3.   

    现在是2个平台交互,从第1个平台上 传个FORMNAME 下来 。我要做的就是 根据传下来的FORMNAME 
    在解决方案中找到 那个FORM 
      

  4.   

    光有FORM 名称 我没法SHOW 啊怎么把该名称转换 并实例成FORM 窗体呢?》
      

  5.   

    if(xxx == "form2")
      new Form2
    else if(...)
      new FormN
    哈哈
      

  6.   

    可通过反射显示FORM
    winform间传值
    public partial class Form1 : Form 

    private void button1_Click(object sender, EventArgs e) 

    Form2 frm2 = new Form2(); 
    frm2.Show(this); 

    } public partial class Form2 : Form 

    private void button1_Click(object sender, EventArgs e) 

    Form1 frm1 = (Form1)this.Owner; 
    ((TextBox)frm1.Controls["textBox1"]).Text = this.textBox2.Text; 
    this.Close(); 

      

  7.   

    知道了窗口类的名称,就可以通过反射来创建该窗体,如下:
    Form frm=(Form)System.Activator.CreateInstance(Type.GetType(YourFormName));
    System.Activator.CreateInstance还有更多的重载方法,使得你可以通过带参数的构造函数来进行窗口实例
      

  8.   

    报错基本很有可能是Type.GetType(YourFormName)中的YourFormName搞错了,应该提供完全限定名
      

  9.   


     public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                       }        private void ShowForm3_Click(object sender, EventArgs e)
            {
                Form3 form = new Form3();
                this.AddOwnedForm(form);
                form.ShowDialog();
            }
            //程序开始时打开FORM1和FORM2
            private void Form1_Load(object sender, EventArgs e)
            {
                 Form2 frm = new Form2();
                 frm.Show();
            }
        }
    public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }        private void ShowForm3_Click(object sender, EventArgs e)
            {
                Form3 form = new Form3();
                this.AddOwnedForm(form);
                form.ShowDialog();
            }
        }
     public partial class Form3 : Form
        {
            public Form3()
            {
                InitializeComponent();
            }        private void ChangeText_Click(object sender, EventArgs e)
            {
                Form form = this.Owner;
               
                this.Text = form.Text;
                
            }
        }
     
      

  10.   

    不管是form1还是form2打开form3
    form3都能把Text改成form1或form2的Text
      

  11.   

    ...对不起各位,我是菜鸟 可能我表达意思错了
    是这样的
    有个STRING a="frmShow";
    然后在FROM1 里面, 我还有另一个解决方案,里面有个frmShow  
    怎么在FROM 1里面 通过这个a  SHOW 出另一个项目的FRMSHOW 的窗体 
    这2个解决方案是交互的
    string a="Form222";
     Assembly assem = Assembly.Load("WindowsApplication1");
                Type myType = assem.GetType(a);
                Object obj = Activator.CreateInstance(myType);
                Form a = (Form)obj;
                a.Show();
    我这样写了 本解决方案的 没问题 可以SHOW出
    但是 跨解决方案就不行了 
    请各位大侠指导
      

  12.   

    WindowsApplication1.dll 或.exe  放到本解决方案 bin->debug 文件夹下
    另外 你的 a 重名了
    还有 string a="命名空间名+"."+要打开的窗口类名"。