【发布时间】:2018-05-22 09:10:05
【问题描述】:
MDIParent (frmMain) 窗体是带有菜单条的主窗口,其中包含 3 个菜单项,即 frmSales、frmProducts、frmCustomers。每个都是我需要调用的表单,而不是每次调用时都实例化。我已经成功地做到了这一点,但是我想创建一个将表单名称作为参数的方法,但我还需要为我传递给它的任何表单调用相应的 FormClose 事件。
这是 frmMain 中的代码,我试图通过在每次选择菜单条项目时简单地调用一个方法来最小化。为了清楚起见,我的代码按预期工作,但我希望看到创建的方法为此。
以下内容是凭记忆在记事本中输入的,所以可能会有一些错误,不过你会明白的:
frmSales SalesForm;
frmProducts ProductsForm;
frmCustomers CustormersForm;
private void ShowChildFormModal (Form myFormName)
{
if(myFormName = null)
{
myFormName= new myFormName(); // is this correct ?
myFormName.MDIParent = this; // referring to frMain - MDIParent
// now i need to call the OnClosed Event for the form in the
// parameter so i can set it to null :
myFormName_FormClose += EventHandler (FormClosed, EventArgs)
myFormName.Show()
}
else
{
myFormName.Activate();
}
}
private void frmSales_OnClosed (object sender, EventArgs e)
{
SalesForm = null;
}
private void frmProducts_OnClosed (object sender, EventArgs e)
{
ProductsForm = null;
}
private void frmCustomers_OnClosed (object sender, EventArgs e)
{
CustomersForm = null;
}
【问题讨论】:
-
“以下内容是凭记忆在记事本中输入的” - 不要那样做。确保您发布minimal reproducible example。
-
对此我深表歉意,我正坐在工作岗位上,与编码完全无关,正在考虑解决方案,也决定在这里提问。但如果我试图解释它,有人会要求查看代码,所以我尽我所能从内存中输入代码。
-
这是asp.net代码吗?
-
c# windows 应用程序 - Visual Studio 2015