gpt4 book ai didi

c++ - 在 C++ 中将父窗体的引用传递给子 UserControl

转载 作者:太空宇宙 更新时间:2023-11-04 11:35:36 26 4
gpt4 key购买 nike

一段时间以来,我一直在尝试将父 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/

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