就像标题一样简单。我试图从一个Windows窗体调用一个函数到另一个窗体。 Form1是我的主要表单,而SpecificsDialogBox是子表单。
至于SpecificsDialogBox,我把它作为构造函数:
private: System::Windows::Forms::Form^ mainForm; //User generated code.
public:
SpecificsDialogBox(System::Windows::Forms::Form^ frm)
{
mainForm = frm; //User generated code.
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
所以当我按下按钮时,这就是我现在所拥有的。 dialogBoxInput()是我尝试以主窗体调用的函数。
private: System::Void okBtn_Click(System::Object^ sender, System::EventArgs^ e)
{
mainForm->dialogBoxInput(txtBox->Text);
txtBox->Text = "";
this->Hide();
}
在主要形式中,这是功能:
public: void dialogBoxInput(String^ input)
{
//Code here
}
我如何首先打开对话框:
private: System::Void specificsBtn_Click(System::Object^ sender, System::EventArgs^ e)
{
Form^ dialogBox = gcnew SpecificsDialogBox(this);
dialogBox->Show();
}
我得到的错误是" dialogBoxInput不是System :: Windows :: Forms :: Form"的成员。我可以猜到的是我如何在对话框标题中存储Form1,但我不完全确定如何解决这个问题。任何帮助表示赞赏。
编辑:
在做了进一步的研究之后,我学会了前瞻性声明。因此,我没有将Form1类调用到SpecificsDialogBox中,而是在我的SpecificsDialogBox类中使用它:
public ref class SpecificsDialogBox : public System::Windows::Forms::Form
{
class Form1; //User generated code.
public:
SpecificsDialogBox()
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
...
private: System::Void okBtn_Click(System::Object^ sender, System::EventArgs^ e)
{
Form1* mainForm;
mainForm->dialogBoxInput(txtBox->Text);
txtBox->Text = "";
this->Hide();
}
};
但是我仍然遇到编译错误"使用未定义类型' SpecificsDialogBox :: Form1'请参阅'SpecificsDialogBox :: Form1'"的声明。调试器指向调用函数和我定义class Form1;