6

Saveボタン、Closeおよびで UserControl を作成しましたCancel。[キャンセル] ボタンで保存せずにフォームを閉じ、[閉じる] ボタンで保存するようメッセージを表示し、[保存] ボタンで閉じずに保存したい。通常、this.Close()キャンセル ボタンで使用しますが、UserControl にはそのようなオプションがありません。そのため、そのためのプロパティを設定する必要があると思います。

"Questions that may already have your answer"セクションを下にスクロールすると、次の質問に出くわしました。その中にロードされた UserControl ボタンから ChildWindow を閉じる方法は? 次の C# コードを使用しました。

private void btnCancel_Click(object sender, EventArgs e)
{
    ProjectInfo infoScreen = (ProjectInfo)this.Parent;
    infoScreen.Close();
}

これは 1 つの画面で機能しますが、このコードをすべての画面に適用する必要があるのでしょうか。もっと効率的な方法があるべきだと思います。だから私の質問は、私が持っているすべてのフォームにこのコードを適用する必要がありますか、それとも別の (より効率的な) 方法がありますか?

4

4 に答える 4

23

あなたが使用することができます

((Form)this.TopLevelControl).Close();
于 2012-11-23T11:21:48.147 に答える
5

任意のコントロールで使用できる FindForm メソッドを使用できます。

private void btnCancel_Click(object sender, EventArgs e)
{
    Form tmp = this.FindForm();
    tmp.Close();
    tmp.Dispose();
}

フォームを破棄してリソースを解放することを忘れないでください。

お役に立てれば。

于 2012-11-23T11:37:43.803 に答える
1

リモートスレッドを使用して、コードの任意の部分で1つのフォームを閉じることもできます。

            MyNamespace.MyForm FormThread = (MyNamespace.MyForm)Application.OpenForms["MyForm"];
            FormThread.Close();
于 2012-11-23T19:26:59.230 に答える
0

私は簡単な答えを見つけました:)私はすべてそのようなことを考えました。

UserControl 内の WinForm を閉じるにはButtonClicked Event、次のコードを使用します。

private void btnCancel_Click(object sender, EventArgs e)
{
    Form someForm = (Form)this.Parent;
    someForm.Close();
}
于 2012-11-23T10:57:47.337 に答える