日期:2014-05-18  浏览次数:20981 次

求助?c# 有两个窗口,如何调用另一窗口的控件?
Form1 有个listbox1,Form2有个textbox1,button1.
最终结果:按form2的button1按钮,把textbox1.text的值添加到form1的listbox1中

本人试过把listbox1设成public,
在form2中
private void button2_Click(object sender, EventArgs e)
{
Form1 pForm1=new Form1();
pForm1.listbox1.items.add(textbox1.text);  
 }


经过试验。。。form1中的listbox1没反应。。没出错,没有添加到任何东西!!
如何做才对??知道的各位大侠能否告诉一下小弟!

------解决方案--------------------
private void button2_Click(object sender, EventArgs e) 

Form1 pForm1=Form1(Application.OpenForms["Form1"]); 
pForm1.listbox1.items.add(textbox1.text);


要理解new的意思,既然写了new,那就是新生成的一个实例,跟你已经存在的Form1不是一回事
------解决方案--------------------
Form1 pForm1=new Form1(); 
pForm1没有显示啊!怎么看啊?
------解决方案--------------------
//form1 调用
Form2 frm=new Form2();
form.ShowDialog (this);

private void button2_Click(object sender, EventArgs e) 

Form1 pForm1=( Form1)this.Owner; 
pForm1.listbox1.items.add(textbox1.text);

  
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) 

http://feiyun0112.cnblogs.com/
------解决方案--------------------
form1中加入:
Form2 dlg = new Form2();
dlg.Owner = this;
dlg.ShowDialog();
同时设置listBox1的属性为public

form2中加入:
private void button1_Click(object sender, EventArgs e)
{
Form1 pForm1 = (Form1)this.Owner;
pForm1.listBox1.Items.Add(textBox1.Text);
}
------解决方案--------------------
探讨
private void button2_Click(object sender, EventArgs e)
{
Form1 pForm1=Form1(Application.OpenForms["Form1"]);
pForm1.listbox1.items.add(textbox1.text);
}

要理解new的意思,既然写了new,那就是新生成的一个实例,跟你已经存在的Form1不是一回事

------解决方案--------------------
C# code
((ListBox)Application.OpenForms["Form1"].Controls.Find("listbox1", true)[0]).Items.Add(textbox1.text);

------解决方案--------------------
探讨
private void button2_Click(object sender, EventArgs e)
{
Form1 pForm1=Form1(Application.OpenForms["Form1"]);
pForm1.listbox1.items.add(textbox1.text);
}

要理解new的意思,既然写了new,那就是新生成的一个实例,跟你已经存在的Form1不是一回事

------解决方案--------------------
Form1 pForm1=new Form1(); 
-------------
这句将生成一个隐藏的Form,因为你没让这个form show出来.
在form2中需要一个form1的引用,要保证他就是你要的那个form1.

Form1 pForm1=(Form1)Application.OpenForms["Form1"]

这么做可以得到之前的对象,然后再按你那么做就可以了.
------解决方案--------------------
private void button2_Click(object sender, EventArgs e) 

Form1 pForm1=Form1(Application.OpenForms["Form1"]); 
pForm1.listbox1.items.add(this.textbox1.text);


------解决方案--------------------
在form2 中定義一個事件 clickEvent;


當form2 的button_click時,則觸發這個事件
button_click(object sender,evetargs e)
{
if(clickEvent!=null)
clickEvent(this,e);
}


form1 中在創建form2的對象時這樣寫
form2 frm=new form2();
frm.clickEvent+=new EventHandle(addItem);