Beispiel #1
0
        /// <summary>
        /// 调用动态加载
        /// </summary>
        /// <param name="e"></param>
        private void actionFramework(FrmworkTreeNode e)
        {


            if (e.NodeType == "Window")//调用窗体
            {
                System.Windows.Forms.Form fromCtrl = null;
                fromCtrl = FormExists(this, e.FormName);//根据窗体名查找窗体
                if ((e.BlankWindows) || (!e.BlankWindows && fromCtrl==null))//允许在新窗口打开或者没有生成窗体的都重新创建窗体
                {
                    string DllPathName = Application.StartupPath + @"\" + e.DllFileName;
                    Object[] objArray = new object[3];//dll中类构造函数必须具有的参数数组
                    objArray[0] = e.NodeId;
                    objArray[1] = this.UserId;
                    objArray[2] = this.UserName;
                    DynamicLibrary myDll = new DynamicLibrary();
                    myDll.DllFileName = DllPathName;
                    myDll.DllClassName = e.DllClassName;
                    myDll.MainForm = this;
                    myDll.ObjArray = objArray;
                    if (e.WindowsSDI)
                    {
                        fromCtrl = myDll.CallSDIWindows();
                    }
                    else
                    {
                        fromCtrl = myDll.CallMDIWindows();
                        fromCtrl.Text = e.Text;//设置窗体标题
                    }
                   
                }
                
                else//窗体已经打开,最小化的还原,并显示在最前面
                {
                    if (fromCtrl.WindowState == FormWindowState.Minimized)
                        fromCtrl.WindowState = FormWindowState.Normal;
                    fromCtrl.BringToFront();

                }
            }
            else
                if (e.NodeType == "Function")//调用功能
                {
                    string DllPathName = Application.StartupPath + @"\" + e.DllFileName;
                    Object[] objArray = new object[2];//dll中类构造函数必须具有2个参数
                    objArray[0] = this.UserId;
                    objArray[1] = this.UserName;
                    Object[] objMethodArray = new object[2];//dll中类方法必须具有的参数
                    objMethodArray[0] = e.NodeId;
                    objMethodArray[1] = treeFramework.SelectedNode.Nodes;
                    DynamicLibrary myDll = new DynamicLibrary();
                    myDll.DllFileName = DllPathName;
                    myDll.DllClassName = e.DllClassName;
                    myDll.DllMethodName = e.DllMethodName;
                    myDll.ObjArray = objArray;
                    myDll.ObjMethodArray = objMethodArray;
                    myDll.CallMethod();

                }

                  
        }