c# 窗体之间参数传递的问题

时间:2022-08-29 20:22:39
我在form1中打开form2,在form2中进行操作后将操作得到的值传递给form1用于显示,现在的问题是:当在form2里不用this.close()时,form1里能正常显示从form2传递过来的值,一切正常,但用了this.close()后,form1里什么也不显示,请问是怎么回事儿?谢谢!

8 个解决方案

#1


看看是不是form2.Close时销毁了资源

#2


form2被close后,form2的参数肯定传不到form1了。只能form2传完参数,再close。

#3


this.close()就关闭窗体了,窗体上的那些textbox,combobox,button之类的控件也全部被释放,form2只剩下一个空壳,如果你在form1中取了form2的控件的状态,肯定是取不到了,因为close之后控件被释放,状态也被清除,

你可以用简单的数据来传递,比如string,int, double,list,linkedlist,dictionary等,非界面对象来保存需要传递的值,可以在form2.OnClose中把控件中的值取出来放到这些简单数据类型中,然后form1访问这些简单数据类型,就可以了,

#4


传值写的有问题

#5


新建一个类,将form2要传的值保存起来,form1直接调用那个类

#6


form2已经关闭了。

#7


Form4 f = new Form4();
            if (f.ShowDialog() == DialogResult.OK)
            {
                string s = f.GetString();
            }

#8


我才用了事件委托的办法解决了,非常感谢给位的指点!

#1


看看是不是form2.Close时销毁了资源

#2


form2被close后,form2的参数肯定传不到form1了。只能form2传完参数,再close。

#3


this.close()就关闭窗体了,窗体上的那些textbox,combobox,button之类的控件也全部被释放,form2只剩下一个空壳,如果你在form1中取了form2的控件的状态,肯定是取不到了,因为close之后控件被释放,状态也被清除,

你可以用简单的数据来传递,比如string,int, double,list,linkedlist,dictionary等,非界面对象来保存需要传递的值,可以在form2.OnClose中把控件中的值取出来放到这些简单数据类型中,然后form1访问这些简单数据类型,就可以了,

#4


传值写的有问题

#5


新建一个类,将form2要传的值保存起来,form1直接调用那个类

#6


form2已经关闭了。

#7


Form4 f = new Form4();
            if (f.ShowDialog() == DialogResult.OK)
            {
                string s = f.GetString();
            }

#8


我才用了事件委托的办法解决了,非常感谢给位的指点!