背景:
在bhht_bill界面中点击某个按钮时,弹出bhzx界面,并在bhzx界面中输入值,然后将bhzx界面中输入的值传递回bhht_bill界面。
在bhht_bill界面中:
在bhzx界面中:
在代码跟踪的时候,打开bhzx界面并输入值后,bill.vsbz中是有值的,但当执行到this.close()后,返回到bhht_bill界面中时,函数不会执行messagebox.show("某某操作成功!"),而会跳转至声明公共变量属性的地方,开始执行,也就是会再次执行public string vsbz = string.empty,执行完变量属性后,才会到达messagebox.show("某某操作成功!")的语句,从而bhzx界面传值回bhht_bill界面失败!
那么传值失败的原因是什么呢?
原因在于:bhht_bill bill = new bhht_bill();这句话,因为这是新建了一个bhht_bill的实例,从而需要获取这个类的属性,也就是需要执行bhht_bill类中变量属性部分的代码。
那么如何实现传值呢?
小注:
通过传递窗体自身,而不是新的窗体,可以实现showdialog()界面之间的传值(循环调用)。
最佳实践:
由this(即循环调用)来实现这种功能,其实可以通过一种更为简单、易懂的方式来实现。
代码如下: