我有UserControl
使用我在表单上提供的一些公共属性,在此Paint
的{{1}}事件的顶部,我引用{{ 1}}控件并将其转换为我的表单类型。
UserControl
但是,在“设计”视图中,此代码可以正常工作,但会抛出一个错误,而我在Parent
所取代的所有内容都是一个白色框,显示此帖子标题中的错误。 stacktrace直接导致这行代码。
现在,我通过在UserControl
中通过Property重新路由此强制转换来修复此错误var _parent = (Form1)Parent;
对于那些只是打破设计视图的东西,这有点多了......还有其他想法吗?
答案 0 :(得分:4)
根据代码,您的孩子Control
实例可能已经处理ControlParent
null
。因此,最简单的解决方法是执行以下操作
public Form1 ControlParent
{
get
{
return Parent as Form1;
}
}
注意:一般来说,依赖Parent
特定类型的Control
是个坏主意。它可以防止它被重新托管在其他控件中,并且可以打破经常捏造类型的设计师,以提供良好的设计体验。如果您必须依赖Parent
具有特定类型的值,请确保具有后备计划,该计划在不同类型的情况下不会崩溃。
答案 1 :(得分:0)
您是否在第一个代码中检查父级是否为空?
答案 2 :(得分:0)
您可以尝试设置表单的所有者,然后以您尝试通过父属性的方式访问该属性。