C#winform中有多个窗体,点击form1窗体的button弹出form2,from2中要用到form1中listbox1选中项进行操作
我在form2中定义了,form1frm=newform1();然后把Modifiers也改成Public了,但是我去frm.listbox1.selecteditem时...
我在form2中定义了,form1 frm=new form1();然后把Modifiers也改成Public了,但是我去frm.listbox1.selecteditem时候却是空的不是道为什么啊
展开
6个回答
展开全部
因为你是在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();
然后又在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();
更多追问追答
追问
这样是可以实现,但是每次要执行都必须弹出来form1,也太丑了
追答
“点击form1窗体的button弹出form2”
你不弹出form1,怎么在form1上点按钮button?!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
缺少一个很重要的东西!owner_type...........
Form2 f = new Form2();
f.Owner = this;
f.Show(this);就能把当前form1下的所有控件的值传过去了!
然后在Form2中
Form2 f2 = (Form2)this.Owner;
Form1控件的值等于f2.控件名称.Text;
Form2 f = new Form2();
f.Owner = this;
f.Show(this);就能把当前form1下的所有控件的值传过去了!
然后在Form2中
Form2 f2 = (Form2)this.Owner;
Form1控件的值等于f2.控件名称.Text;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
方法有多种,在form2定义一个Listview类型的属性,从form1 new form2时,把form1中listview对象复制一份赋给form2的属性,在form2直接用就可以了;
还可以将form1这个对象整体作为参数通过构造参数传给form2,同样可以在form2中使用form1中所有公开的控件及方法属性等。
两种方法各有优缺点。、
当然还有其他方法。
还可以将form1这个对象整体作为参数通过构造参数传给form2,同样可以在form2中使用form1中所有公开的控件及方法属性等。
两种方法各有优缺点。、
当然还有其他方法。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你最好在form1中的listbox选中事件作如下操作
定义一个类变量存选中的行,将这个行设置成public然后在form2中访问,这样就应该可以了,如果还是访问不上就看下选中事件运行没有,最好debug
定义一个类变量存选中的行,将这个行设置成public然后在form2中访问,这样就应该可以了,如果还是访问不上就看下选中事件运行没有,最好debug
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你只需要在form2 窗体定义一下属性.比如
string SelectItem;
public string Item选中项
{
set
{
SelectItem = value;
if(value.lenght == 0) return;
在这里一并实现选中后要运行的代码
}
}
然后在form1窗体选中事件中 访问frm.Item选中项 = "";即可当然属性的类型可以改成你选中的LISTBOXITEM
string SelectItem;
public string Item选中项
{
set
{
SelectItem = value;
if(value.lenght == 0) return;
在这里一并实现选中后要运行的代码
}
}
然后在form1窗体选中事件中 访问frm.Item选中项 = "";即可当然属性的类型可以改成你选中的LISTBOXITEM
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询