在不重新编译主程序的情况下要对程序的功能进行扩充,我们可以使用动态生成菜单,将新增的窗体编译成dll文件,然后在主程序的菜单定义文件中注册,即可解决,以后程序升级,只需将对应的dll覆盖。
1.菜单定义文件可以使用ini或XML格式,这里使用的是XML格式
定义主菜单,子菜单,子菜单对应的dll,子菜单对应的函数
dymenu.xml内容如下
<主菜单>动态菜单1
              <子菜单>OpenForm1子菜单>
              <菜单DLL>MyForms.dll菜单DLL>
              <菜单Func>OpenForm1菜单Func>
              <子菜单>OpenForm2子菜单>
              <菜单DLL>MyForms.dll菜单DLL>
              <菜单Func>OpenForm2菜单Func>
主菜单>
<主菜单>动态菜单2
               <子菜单>OpenForm3子菜单>
               <菜单DLL>MyForms.dll菜单DLL>
                <菜单Func>OpenForm3菜单Func>
主菜单>
<主菜单>动态菜单3
                <子菜单>OpenForm4子菜单>
                <菜单DLL>MyForms.dll菜单DLL>
                <菜单Func>OpenForm4菜单Func>
主菜单>
2.菜单对应的MyForms.dll 
               MyForms.cs 代码如下:
using System;
namespace MyForms
{
               public class MyForms
               {
                         public MyForms()
                         {
                          }
                         public void OpenForm1(System.Windows.Forms.Form mainf)