关闭C ++ .net中的上一个表单框

时间:2011-11-10 09:46:22

标签: .net winforms visual-c++ c++-cli visual-c++-2005

我正在使用Visual C ++ 2005,我正在创建一个具有各种表单的应用程序。我想要发生的是当一个新表格被打开时,前一个表格被关闭。我确定这只是我需要添加的一行代码,但对此我是新手,我不知道那是什么。我要关闭的表单是Form1.h。任何帮助将不胜感激。

这是我目前的代码:

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
                 Parts ^parts = gcnew Parts();
                 parts->ShowDialog();
                 this->Close();

3 个答案:

答案 0 :(得分:1)

您只需从要关闭的表单中调用Close()方法即可。 你试过了吗?

答案 1 :(得分:1)

要显示第二个表单(部件),您必须使用显示而不是 ShowDialog 。 ShowDialog会阻止执行,并且在关闭表单部件之前不会调用Close方法。

Parts ^parts = gcnew Parts();
parts->Show(); // Show the form and continue execution
this->Close();

但请记住一件事,如果调用者表单是应用程序的主窗口,当调用方法关闭时,整个应用程序将被关闭,并且随之关闭表单部件将被关闭太。若要解决此问题,我将以不可见的形式启动应用程序。加载该表单后,将启动“调用者”表单。

答案 2 :(得分:0)

我不确定它在C ++中是怎么回事,但在C#中你可以这样做

static Programm
{
    static bool run = true;
    static int state = 1;
    /// <summary>
    /// Der Haupteinstiegspunkt für die Anwendung.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        while (run)
        {
            Application.Run(getForm());
        }
    }

    static private Form getForm()
    {
        Form ret = null;

        switch (state)
        {
            case 1:
                ret = new Form1();
                break;
            case 2:
                ret = new Form2();
                break;
        }

        return ret;
    }

    static public void setState(int i)
    {
        if (i == 0)
        {
            run = false;
        }
        else
        {
            state = i;
        }
    }
}

希望这有帮助