フォームクラス(およびそのデザイナークラス)と静的クラスを含むWindowsフォームアプリケーションがあります。静的クラスからフォームクラスのメソッドを呼び出すことによってフォームを非表示にしたいと考えています。次のように静的コンテキストでWindowsフォームフォームを非表示にする方法
非表示方法は次のとおりです。
internal static void HideController()
{
DialogResult dlgResult =
MessageBox.Show("Controller will now close.", "Closing...",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
if (dlgResult == DialogResult.OK)
{
this.Hide();
}
}
フォームは、したがって、私は「これは」静的コンテキストでは有効でないという問題に走り続ける、静的ではありません。私はこのようにメソッドを呼びたいと思います:
static UtilScenario()
{
_stkProgramId = ConfigurationManager.AppSettings.Get("stkProgramId");
if (CheckIfLaunched())
{
InitAllFields();
}
else
{
frmUavController.HideController();
}
}
どうすればいいですか?
HideControllerメソッドからstatic修飾子を削除し、その後、あなたは 'this'キーワードを使用することができます。 – Josh
@Josh Einstein、はい、しかし、メソッドを静的に呼び出すにはどうしたらいいですか?すでにインスタンス化されたフォームオブジェクトを参照したいと思います。 – wulfgarpro
あなたの例では、静的に呼び出すようには見えません。とにかく、可能であれば、何かのインスタンスに作用する静的メソッドの使用を避けてください。それが不可能な場合は、SOで "Singleton"デザインパターンについての情報を調べてください。 – Josh