C#winform中有多个窗体,点击form1窗体的button弹出form2,from2中要用到form1中listbox1选中项进行操作

2024年11月29日 20:56
有6个网友回答
网友(1):

你应该就是想把form1的选中项的值传给form2吧
是的话,可以在form2里定义一个属性比如public String str1="';
在form1执行弹出form2时:
form2 frm==new form2();
frm.str1="你的选中项的值";
frm.show();
在form2里面直接取str1就可以了~

网友(2):

因为你是在form1中弹出form2
然后又在form2中new出来一个新的form1——frm
两个form1根本就不是同一个对象
获取到的frm.listbox1.selecteditem当然是空的

//Form2:
private object item;
public Form2(object item) : this()
{
this.item = item;
}

//Form1:
Form2 form2 = new Form2(this.listbox1.selecteditem);
form2.Show();
//from2.ShowDialog();

网友(3):

缺少一个很重要的东西!owner_type...........
Form2 f = new Form2();
f.Owner = this;
f.Show(this);就能把当前form1下的所有控件的值传过去了!
然后在Form2中
Form2 f2 = (Form2)this.Owner;
Form1控件的值等于f2.控件名称.Text;

网友(4):

方法有多种,在form2定义一个Listview类型的属性,从form1 new form2时,把form1中listview对象复制一份赋给form2的属性,在form2直接用就可以了;
还可以将form1这个对象整体作为参数通过构造参数传给form2,同样可以在form2中使用form1中所有公开的控件及方法属性等。
两种方法各有优缺点。、
当然还有其他方法。

网友(5):

你最好在form1中的listbox选中事件作如下操作
定义一个类变量存选中的行,将这个行设置成public然后在form2中访问,这样就应该可以了,如果还是访问不上就看下选中事件运行没有,最好debug

网友(6):

你只需要在form2 窗体定义一下属性.比如
string SelectItem;
public string Item选中项
{
set
{
SelectItem = value;
if(value.lenght == 0) return;
在这里一并实现选中后要运行的代码
}
}
然后在form1窗体选中事件中 访问frm.Item选中项 = "";即可当然属性的类型可以改成你选中的LISTBOXITEM