C++ cli 在windows窗体C++;

C++ cli 在windows窗体C++;,c++-cli,circular-dependency,C++ Cli,Circular Dependency,我认为问题在于我的代码停留在循环依赖上。我试图将值从一个表单发送到另一个表单。在form1中,我声明Form2并打开它,因此我无法从Form2中声明form1,我不知道现在该做什么 代码: 上面是form1,当我按下按钮,它会打开form2。 下面的代码显示了form2,当我按下按钮时,它声明form1并将值发送给它 private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { S

我认为问题在于我的代码停留在循环依赖上。我试图将值从一个表单发送到另一个表单。在form1中,我声明Form2并打开它,因此我无法从Form2中声明form1,我不知道现在该做什么

代码:

上面是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();
}

我是编程新手。

如果我理解正确,您希望将值传递回原始表单,而不是创建一个新的实例。如果是这样的话,可以考虑在显示之前设置OnFrime2,这样您就可以从父属性中获得第一个表单,然后在将其转换为适当的类型之后将相关值设置为它。


在代码中,单击按钮后,您还隐藏了第二个表单,您是否希望表单只是一个对话框,以获取一些值并将其返回给父级?如果是这样,也许您想考虑使用StJudio,而不是在返回之前阻止与父对象的交互,然后您可以使用调用方法中的第二表单的实例来访问该表单上的属性。MSDN上该方法的示例显示了如何从第二个表单到第一个表单获取值。

在.h文件中,使用前向声明。在.cpp中,包括.h文件。
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) 
{
    String^ mas = textBox1->Text;
    Pagrindinis^ pgrr = gcnew Pagrindinis();
    pgrr->SomeText = mas;
    this->Hide();
}