0

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

这是我当前的代码:

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

3 回答 3

1

您可以通过简单地从您希望关闭的表单中调用 Close() 方法来做到这一点。你试过吗?

于 2011-11-10T10:15:39.113 回答
1

为了显示第二种形式(零件),您必须使用Show而不是ShowDialog。ShowDialog 阻止执行,并且在窗体 Parts 关闭之前不会调用 Close 方法。

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

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

于 2013-04-12T06:59:18.233 回答
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;
        }
    }
}

希望这可以帮助

于 2013-04-07T22:49:46.030 回答