У меня есть приложение для 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'? –
Кроме того, вы не показываете, как вы закрываете и повторно открываете подформу в любом из кода, который вы отправили –
Где вы создаете 'BusinessRules'? Я подозреваю, что вы создаете его один раз в каком-то месте, например 'Home_Load', а затем каждый раз используете один и тот же экземпляр. Поскольку вы закрываете форму «BusinessRules», а не просто скрываете ее, она становится удаленной, а затем вы вызываете «Show()» на расположенной форме – Rhumborl