if(xxx == "form2") new Form2 else if(...) new FormN 哈哈
可通过反射显示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(); } }
知道了窗口类的名称,就可以通过反射来创建该窗体,如下: Form frm=(Form)System.Activator.CreateInstance(Type.GetType(YourFormName)); System.Activator.CreateInstance还有更多的重载方法,使得你可以通过带参数的构造函数来进行窗口实例
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;
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
{
Form1 frm = new Form1();
}
else {
Form2 frm = new Form2();
}
在解决方案中找到 那个FORM
new Form2
else if(...)
new FormN
哈哈
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();
}
}
Form frm=(Form)System.Activator.CreateInstance(Type.GetType(YourFormName));
System.Activator.CreateInstance还有更多的重载方法,使得你可以通过带参数的构造函数来进行窗口实例
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;
}
}
form3都能把Text改成form1或form2的Text
是这样的
有个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出
但是 跨解决方案就不行了
请各位大侠指导
另外 你的 a 重名了
还有 string a="命名空间名+"."+要打开的窗口类名"。