gpt4 book ai didi

c# - 无法将类型为 'System.Windows.Forms.Form' 的对象转换为类型 'Project.Form1'

转载 作者:太空狗 更新时间:2023-10-30 01:26:02 25 4
gpt4 key购买 nike

我有一个 UserControl,它使用我在表单上可用的一些公共(public)属性,位于此 UserControl< 的 Paint 事件的顶部,我引用控件的 Parent 并将其转换为我的表单类型。

var _parent = (Form1)Parent;

但是,此代码有效,在“设计” View 中,抛出一个错误,我在 UserControl 的位置看到的只是一个白色框,显示了这篇文章标题中的错误。堆栈跟踪直接指向这行代码。

现在,我已通过我的用户控件中的属性重新路由此转换来修复此错误

    public Form1 ControlParent
{
get
{
if (Parent != null)
{
return (Form1)Parent;
}
return null;
}
}

这对于破坏设计 View 的东西来说有点过分了......还有其他想法吗?

最佳答案

根据代码,您的子 Control 实例似乎已经可以处理 ControlParentnull 的情况。因此,最简单的解决方法就是执行以下操作

public Form1 ControlParent
{
get
{
return Parent as Form1;
}
}

注意:一般来说,依赖于特定类型的 ControlParent 并不是一个好主意。它可以防止它被重新托管在其他控件中,并且可以破坏经常捏造类型以提供良好设计体验的设计人员。如果您必须依赖像 Parent 这样的特定类型的值,请确保有一个回退计划,该计划不会在面对不同类型时崩溃。

关于c# - 无法将类型为 'System.Windows.Forms.Form' 的对象转换为类型 'Project.Form1',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5780220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com