0

Visual C++ 2005 を使用しており、さまざまな形式のアプリケーションを作成しています。私が望んでいるのは、新しいフォームが開かれたときに前のフォームが閉じられることです。追加する必要があるのは1行のコードだけだと確信していますが、これが初めてなので、それが何であるかわかりません。閉じたいフォームは 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

2 番目のフォーム (パーツ) を表示するには、 ShowDialogの代わりにShowを使用する必要があります。ShowDialog は実行をブロックし、フォーム パーツが閉じられるまで 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 に答える