从一个Windows窗体调用一个函数到另一个窗体

时间:2014-10-02 02:31:07

标签: visual-studio-2010 visual-c++ c++-cli

就像标题一样简单。我试图从一个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;

的位置

0 个答案:

没有答案