私はwinformsプロジェクトに3つのフォームがあり、そのすべてにForm2を開くための同じコードを起動するボタンがあります。このコードを同じプロジェクト内のクラスファイルに置くか、別のクラスライブラリに入れてコードを集中させる必要があります。私は一般的な形式にForm1に、Form2を、たForm3からこのコードを移動するとクラスライブラリ/ファイルから呼び出しウィンドウフォームを閉じる方法は?呼び出しフォームにアクセスして.close()を実行する必要があります
frm1 entryform = (frm1)Application.OpenForms["frm1"];
if (entryform == null)
{
entryform = new frmMainMenu();
}
entryform.StartPosition = FormStartPosition.Manual;
entryform.Location = this.Location;
entryform.Show();
this.close();
私はthis.close();
がされている行を置き換えるために、呼び出し元のフォームにアクセスすることはできません。今のコードは以下のように同じ形の内部にありますMethod.CallingForm.Close()やC#の何かのようなプロパティがありますか?助けてください
私はパラメータとしてフォームを渡したくありません。フォームは渡すには重すぎます。他の選択肢?
私はパラメータとしてフォームを渡したくありません。フォームは渡すには重すぎます。他の選択肢? – Enggr
これは本当に悪い考えです。あなたの問題を簡単に解決するには、フォームの代わりに独自のClose()メソッドを呼び出してください。 –
@Enggr:あなたのフォームがどれほど重いものであっても、それを渡すことは簡単です。基本的にオブジェクト参照を渡しています。あなたがそれを渡した後にあなたがフォームで行うことは、あなたがそれを重いと考えるようにする可能性があることです。漢のアドバイスに従って、それぞれのフォームがそれ自体を閉じる責任を負うように論理を変更してください。 –