卡在 windows 形式 C++ 的循环依赖

Stuck on circular dependency on windows forms C++

我认为问题出在我的代码卡在循环依赖上。我正在尝试将价值从一种形式发送到另一种形式。在 form1 中,我声明了 Form2 并打开它,因此我无法从 Form2 声明 Form1,我现在不知道该怎么做。

代码:

private: System::Void paieškaToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e)
{
    PaieskaGUI^ paieska = gcnew PaieskaGUI(); //declaring the other form
    paieska->Show(); //opening it when the button is pressed
}

上面是 form1,当我按下按钮时,它会打开 form2。 在下面显示 form2 的代码中,当我按下按钮时,它声明 form1 并将值发送给它

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) 
{
    String^ mas = textBox1->Text;
    Pagrindinis^ pgrr = gcnew Pagrindinis();
    pgrr->SomeText = mas;
    this->Hide();
}

我是编程新手。

如果我理解正确的话,您希望将一个值传回原始形式,而不是创建一个新的实例。如果是这种情况,可以考虑在显示之前在 form2 上设置 Parent,这样您就可以从 Parent 属性 获取第一个表单,然后在将其转换为合适的类型。

在代码中,您还隐藏了单击按钮后的第二个表单,您是否打算让该表单只是一个对话框以获取一些值并将其 return 传递给父级?如果是这样,也许您想考虑改用 ShowDialog,这会阻止与父项的交互,直到 returning,然后您可以使用调用方法中的第二种形式的实例来访问该形式的属性。 Form.ShowDialog 方法的 MSDN 示例显示了如何从第二个表单获取值到第一个表单。