一段时间以来,我一直在尝试将父 Form1
的指针传递给子用户控件 oP2_settings
。
此时,我正在尝试实现基本设置功能的用户控件。其中一些需要与父元素(状态条、窗口标题等)交互。
我设法通过两者实现了这一点:
- 将指针转发到
Form1
的用户控件构造函数中的“this” - 执行一个单独的 void 函数
setParent
,该函数采用Form1^
的参数>
但是,我找不到任何不破坏设计器的解决方案。
例如,当我删除对 Form1
类的前向引用时,设计器可以正常工作,但编译器自然不会允许编译以未定义的标识符为由继续进行。
当我让程序运行时,设计器表现得很奇怪。根据情况,大约有 4 种不同的错误,从“无法在传递给事件绑定(bind)服务的对象上设置事件”到“找不到方法”,或者偶尔是设计人员加载,但不是在适当的选项卡中显示用户控件,而是在两者中显示 Form1
(用户控件作为单个元素)。
有什么方法可以让它在运行时/编译时和设计时都工作?每次我想编译/移动一个元素时,我都不想在我的行中注释和注释掉。
这是在 C++ Windows 窗体应用程序中,我使用的是 VS2010。
最佳答案
这是一个过于紧耦合的设计。您的用户控件离不开它的父控件。您应该使用事件而不是在父子之间传递引用。
如果您的用户控件发生变化并且父控件需要更新,则在用户控件中为此创建一个事件并触发它。父级依次为事件安装处理程序并执行适当的操作。
关于c++ - 在 C++ 中将父窗体的引用传递给子 UserControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23161443/