因此,我正在使用WinForms在C#中構建MDI應用程序。在這種情況下,我不能爲我的生活弄清楚如何遵循DRY。我在我的主菜單欄中使用toolstripmenuitems打開了新的MDI兒童。我已經重用了「NewChild」方法作爲每個事件的事件處理程序。我試圖不必爲每個子窗口重複自己,因爲它們都遵循相同的實例化模式。繼WinForms MDI子窗口乾燥
我研究過泛型並使用Type類,但它並不真正讓我想要的地方。理想情況下,我只想說
// etc...
TypeOfForm = ConfigurationForm;
}
new TypeOfForm();
但我不認爲這種失去語言結構存在。
public partial class MainForm : Form
{
private AboutForm aboutForm;
private ConfigurationForm configForm;
private ResultsForm resultForm;
private LogForm logForm;
private void NewChild(object sender, EventArgs e)
{
Form newForm;
if (sender == testConfigurationToolStripMenuItem)
{
if (configForm == null)
{
configForm = new ConfigurationForm();
}
newForm = configForm;
}
else if (sender == resultsToolStripMenuItem)
{
if (resultForm == null)
{
resultForm = new ResultsForm();
}
newForm = resultForm;
}
else if (sender == logToolStripMenuItem)
{
if (logForm == null)
{
logForm = new LogForm();
}
newForm = logForm;
}
else
{
return;
}
newForm.MdiParent = this;
newForm.Disposed += new EventHandler(ChildDisposed);
newForm.Show();
}
}
什麼是在這種情況下實施DRY的好方法?
嘗試改變這一行'newForm.MdiParent = this;'''newForm.MdiParent = this.MdiParent;' – MethodMan 2013-03-26 17:39:41
我很困惑,我從MDI父(this)創建這些子窗體,爲什麼要看在這個.mdiparent? – Paveway 2013-04-01 22:44:17