1

これが私のコードです

Form1

TicketDetails td = new TicketDetails(getTicketID());
td.Show();

tdが表示されたらForm1を閉じたい。

4

4 に答える 4

4

Form1が引数として渡したフォームの場合、それApplication.Runを閉じることはできません。そうしないと、アプリケーションが終了します。ただし、が表示されたらフォームを非表示にすることができtdます。

TicketDetails td = new TicketDetails(getTicketID());
td.Show();

// Hide the main form
form1.Hide();

Form1がアプリケーションのメインフォームでない場合は、を呼び出すだけClose()ですform1

@commentを編集し、

public class Form1 : Form
{
    private override OnLoad(object sender, EventArgs e) {
        DoWork();
    }

    public void DoWork() {
        // your code
    }
}

次に、インスタンス。

TicketDetails td = new TicketDetails(getTicketID());
td.Show();

form1.Hide();

// example, maybe you need to call your work method
form1.DoWork();
于 2012-05-02T16:17:13.793 に答える
3

2番目のフォームが表示された後に最初のフォームを閉じる場合は、次のForm.Shownイベントを使用します。

td.Shown += (o, e) => { this.Close(); }
td.Show();

興味深い可能性のある他のイベントについては、Windowsフォームのイベントの順序を確認してください。もちろん、現在のフォームをすぐに閉じることもできます。

this.Close();
td.Show();
于 2012-05-02T16:17:06.357 に答える
1

私はこのようなことをしました:

TicketDetails td = new TicketDetails(getTicketID());
td.Show();
this.Hide();
td.Close += (object sender, EventArgs e) =>
{
    td.Parent.Close();
};
于 2012-05-02T16:16:59.557 に答える
0

TicketDetailsがモーダルでない限り、td.show()の後のコードは実行されます。

また、Form1がプロジェクトのスタートアップフォームであると想定しています。その場合は、.closeを使用するとアプリが停止します。

これを試しましたか:

TicketDetails td = new TicketDetails(getTicketID());
td.Show();
Form1.Hide();

これは明らかにForm1を隠します

ありがとう

ポール

于 2012-05-02T16:19:44.380 に答える