2

私のコードの 1 つで、フォームの public static オブジェクトを使用しました。このコードでは、このフォームで Show() および Hide() 関数を使用しました。これは、メイン アプリケーションが実行されている限り、このフォームを閉じたくないためです。「タスクマネージャー - >アプリケーションタブ」からフォームを閉じると、このフォームは破棄されます。次のような機能があります。

public static fullScreen = null;

public FormFullScreen GetBackFullScreen()
{
if(fullScreen == null)
{
fullScreen = new fullScreen();
}

return fullScreen;
}

「GetBackFullScreen().Show()」を呼び出すと、Disposed Object フォームを表示できません。誰でも解決策を提案できますか? 前もって感謝します。

4

2 に答える 2

3
public static fullScreen = null;

public FormFullScreen GetBackFullScreen()
{
if(fullScreen == null || fullScreen.IsDisposed)
{
    fullScreen = new fullScreen();
}

return fullScreen;
}

フォームが破棄されているかどうかを取得し、破棄されている場合は新しいインスタンスを作成します。

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.isdisposed.aspx

于 2013-06-23T11:27:10.300 に答える
0

ここでの問題を完全には理解していませんが、次のことを試してみてください。

public static fullScreen = null;

public FormFullScreen GetBackFullScreen()
{
    if(fullScreen == null)
    {
        fullScreen = new fullScreen();
        fullScreen.Closed += (s, e) => fullScreen = null;
    }
    return fullScreen;
}

これにより、フォームが閉じられるたびにバッキング フィールドがクリアされ、その後新しいフォームが作成されるようになります。

于 2013-06-23T11:37:30.293 に答える