MDI アプリケーションがあります。フォームの 1 つは、複数のインスタンスを同時に開くことができる必要があります。このアプリ内に Program クラスがあります。フォームのインスタンスごとに、Program オブジェクトを各フォームに配置する必要があります。これは機能していますが、データが変更されるたびに、フォームの複数のインスタンスすべてに含まれるすべてのプログラム オブジェクトが変更されます。
これが Program クラスです (今のところ非常に単純なクラスです):
public class Program
{
string strProgramCode;
public Program()
{ }
public string ProgramCode
{
get { return strProgramCode; }
set { strProgramCode = value; }
}
}
フォームのコードは次のとおりです。
frmWeeklyIndividualBudgets tfrmWeeklyIndividualBudgets = new frmWeeklyIndividualBudgets();
tfrmWeeklyIndividualBudgets.Program = this.Program;
tfrmWeeklyIndividualBudgets.Text = this.Program.ProgramCode.ToString() + " Weekly Budget";
this.CheckMdiChildren(tfrmWeeklyIndividualBudgets);
CheckMdiChildren メソッドは次のとおりです。
private void CheckMdiChildren(Form form)
{
foreach (Form frm in this.MdiChildren)
{
if (frm.GetType() == form.GetType())
{
if (frm.GetType().ToString() == "IPAMFinancial_Program_Financial_Breakdown.frmWeeklyIndividualBudgets")
{
frmWeeklyIndividualBudgets tfrm = (frmWeeklyIndividualBudgets)frm;
if (tfrm.Program.ProgramCode == this.Program.ProgramCode)
{
frm.Focus();
return;
}
}
else
{
frm.Focus();
return;
}
}
}
form.MdiParent = this;
form.Show();
}