私はメインフォーム(ホームスクリーン)と多くのサブフォームを持つWindowsアプリケーションを持っています。System.ObjectDisposedExceptionフォームを閉じるとき
サブフォームが閉じられ、メインフォームから再度呼び出されると、System.ObjectDisposedException例外が発生します。
は、以下の私の画面のコードが記載されています:
ホーム画面のコードは、サブフォームを呼び出す:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Application
{
public partial class Home : Form
{
private void Businesslogic_button_Click(object sender, EventArgs e)
{
BusinessRules.Show();
}
}
}
処分のオブジェクトの
サブフォームDesigner.CSコード:
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
サブフォーム.CSコードについてフォーム終了イベント:
bool formClosing false;
private void BusinessRules_FormClosing(object sender, FormClosingEventArgs e)
{
if (formClosing) return;
e.Cancel = true;
Timer Tmr = new Timer();
Tmr.Tick += Tmr_Tick;
Tmr.Start();
formClosing = true;
}
void Tmr_Tick(object sender, EventArgs e)
{
((Timer)sender).Stop();
this.Close();
}
'BusinessRules_FormClosing'のタイマーの目的は何ですか? –
また、投稿したコードのサブフォームを閉じて再オープンする方法を示していません –
「ビジネスルール」はどこに作成されていますか?私はあなたが 'Home_Load'のような場所でそれを一度作成し、毎回同じインスタンスを使用していると考えています。 'BusinessRules'フォームを単に隠すのではなく、処理を中止しているので、処分されたフォームで' Show() 'を呼び出しています。 – Rhumborl