private void showForm(object sender)
{
//每个Menu字项的名字与Form的名字是有关联的,举个例子
//Menu名字:m_DataShow,Form的名字:m_DataShowForm
string formName;
formName =(sender as ToolStripMenuItem).Name.Replace("m_", ""); //Menu的名字m_Data
Console.WriteLine(formName);
formName = formName.Substring(0, 1).ToUpper() + formName.Substring(1) + "Form";
formName = "AutomatedOrdering." + formName; //命名空间
Assembly assmbly = Assembly.GetExecutingAssembly();
Form form = assmbly.CreateInstance(formName) as Form;
foreach (Form openForm in this.MdiChildren) //仅止FORM多开,相同的仅打开一个
{
if (openForm.Name == form.Name)
{
openForm.Activate();
form.Dispose();
return;
}
}
form.MdiParent = this;
form.Show();
}
private void SubMenu_Click(object sender, EventArgs e) //每个菜单的onClick事件,全部指向这个过程
{
showForm(sender);
}
C#:通过反射动态窗体的名字打开MDI窗体,且唯一打开一个
最新推荐文章于 2022-08-19 15:15:16 发布