特定のイベントでメインフォームを非表示にしてから、もう一度表示しようとしています。問題は、私がそれを隠すとフォームが破棄されるということです。フォームを隠そうとしたときに廃棄される
フォームを隠すための私のコード: "this.Show()" メソッドが呼び出されると
private void MessageRecived(object sender)
{
//Do stuff
if (status == NetConnectionStatus.Connected)
{
this.Hide();
}
else if (status == NetConnectionStatus.Disconnected)
{
this.Show();
}
//Do some more stuff
}
、次の例外がスローされます。
System.ObjectDisposedException
追加情報:廃棄オブジェクトにアクセスすることはできません。
私はまた、「偽this.Visible =」と「this.SetVisibleCore(偽)」を使用しようとしましたが、私は同じ結果を得ます。
フォームを削除せずにフォームを非表示にするにはどうすればよいですか?
EDIT:
私は私のミスを見つけた:そこのフォームを参照する私のコード内のオブジェクトがあって、それを閉じました。他の何かがこのフォームを使用していると指摘したJustin Harveyに感謝します。
無関係ですが、if文で同等かどうかをチェックしていないので、ステータスを割り当てています。それらを 'status == NetConnectionStatus.Connected'と' status == NetConnectionStatus.Disconnected'に変更してください。また、 'Control.Hide'は設計通りに処理されないので、' 'Do stuff'と' 'もっとやることをやっています ''で何が起こっていますか? – AntiTcb
それを処理している隠れているのではありません、フォームを使用するコードを表示できますか? –
@AlexGravelyあなたは正しいです、私はそれを修正します – user6262616