问题描述
我的传值问题,不同于一般的用事件触发委托来传值,我是要在控件load的时候传值,具体例子如下:winform中,自定义控件A,BB放在A中,A里面还有Lable1,那么在运行到A出现的时候,B也应该同时出现,那么我想再B的B_Load()里面想用到他的容器(就是A)里面的Lable1.Text,那么应该怎么传进去呢?我发觉用很多传值的方法,传进去B_Load()里面的值都是null。。。郁闷了~!
解决方案
解决方案二:
额..?为null...用一个static变量试一下.?
解决方案三:
static一样都是这样的情况。。。可能是在load加载,所以有问题。。。
解决方案四:
不应该呀
解决方案五:
因为我A里面的Lable不是预先赋值的,是从构造函数里传给Lable的
解决方案六:
想看看楼主两个Load里的代码的顺序.
解决方案七:
A控件容器Label1B控件首先你要去深入理解他的初始化过程.只有在执行Load方法的时候才能够以控件名调用控件而这里执行的顺序是B控件的Load方法接着才是A控件的Load方法.Label1在A控件中.只有执行了A的Load方法后才能够以控件名的形式调用Lable1而你这里并没有执行A控件的Load方法.所以不能够得到Label1.Text
解决方案八:
ControlC里:stringstr="x"controlAA=newcontrolA(str);this.controls.add(A);ControlA里:publicstaticstringRoomID;构造函数publiccontrolA(stringi){InitializeComponent();RoomID=i;}B是放在A里面的。。所以不用我new和addControlB里:privatestringBRoomID;privatecontrolB_load(..){controlACA=(controlA)this.parent;BRoomID=CA.RoomID;接着这里的代码一定要用到BRoomID。。。。。}就是可能这些顺序不当
解决方案九:
啊?是先loadB再loadA的吗?
解决方案十:
应该是先初始化最底层的UserControl再初始化同级的控件最外层的控件最后初始化!最后才是页面初始化