WinForms中EffectGroupUserControl实例干扰问题及Parent属性疑问
WinForms容器嵌套下Parent属性问题解答
确实是因为TableLayoutPanel的嵌套导致Parent属性不符合你的预期:
当把SingleEffectUserControl添加到EffectGroupUserControl内部的TableLayoutPanel时,它的直接Parent指向的是这个TableLayoutPanel,而非外层的EffectGroupUserControl。如果之前你的代码是通过Parent来获取所属的EffectGroup实例,那拿到的其实是中间的容器控件,自然会出现操作一个组影响其他组的问题。你现在采用的创建
SingleEffectUserControl时直接传入EffectGroupUserControl实例的方案,是比依赖Parent层级更稳妥的做法——毕竟后续如果调整容器结构(比如加个Panel嵌套),依赖Parent的代码很容易失效,直接传实例能彻底避免这种层级依赖问题。要是非要通过Parent层级获取,得往上遍历一层:比如用
this.Parent.Parent来拿到EffectGroupUserControl,但这种写法非常脆弱,不推荐在实际项目里用。
内容的提问来源于stack exchange,提问作者Adil Ahmed
相关产品推荐
相关产品推荐

