我在子窗体中调用父窗体中的combox1控件,在子窗体中定义如下:Form1 form = new Form1(); //Form1是主窗体的名称,实例化一个主窗体public string portname; //定义一个公共的字符串变量public void setSerialport()
{
portname = Convert.ToString(form.comboBox1.SelectedItem); //将主窗体中的combox1的内容取出来。 }问题如下:主窗体中的combox1在不做选择情况下的内容为com1,可以选择com2,com3,com4.但是我无论选择什么,子窗体中的值始终为com1,不会随着他的变化而变化,他只认默认的那个值。请问大家怎么解决?
我如果将combox1的默认值改为com2,那他读出来的就是com2,其他的就不认了。如果默认变成空,无论你选什么,读出来的就是空。
{
portname = Convert.ToString(form.comboBox1.SelectedItem); //将主窗体中的combox1的内容取出来。 }问题如下:主窗体中的combox1在不做选择情况下的内容为com1,可以选择com2,com3,com4.但是我无论选择什么,子窗体中的值始终为com1,不会随着他的变化而变化,他只认默认的那个值。请问大家怎么解决?
我如果将combox1的默认值改为com2,那他读出来的就是com2,其他的就不认了。如果默认变成空,无论你选什么,读出来的就是空。
Form1 fm = (Form1)this.ParentForm;
this.comboBox1.Selectedndex = fm.comboBox1.Selectedndex;也可以遍历找到主窗体,同样转换一下,即可访问
此操作在第一个窗体中发生
//有一个按钮事件 把第一个窗体传到第二个窗体中去this代表第一个窗体
Form2 form2 = new Form2(this);
//show第二个窗体出来
form2.Show();
comboBox1 必须设为public
此操作第二个窗体间的发生 同样有一个按钮事件
//先把第一个窗体new出来
Form1 form1 = new Form1();
//赋值
string portname= form1.comboBox1.text;
还有Form2构造函数要修改一下
//定义一个Form1
private Form1 form1;
public Form2(Form1 form1)
{
this.form1 = form1;
InitializeComponent();
}
以上操作即可搞定
直接在子窗体访问属性的值就OK了,别把主的给new了就行,,即from1 fm1=new form1肯定错。