예제 #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();

                }

                  
        }
예제 #2
0
   private void treeFramework_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
   {
       
        NowtreeNode = (FrmworkTreeNode)e.Node;
        NowtreeNodeId = NowtreeNode.NodeId;
        if (NowtreeNode.MouseIsClick)
           try
           {
               actionFramework(NowtreeNode);
           }
           catch (Exception ex)
           {
               MessageBox.Show  ("执行命令错误,错误代码:"+ex.Message.ToString(),"错误");
           }
 
       }
예제 #3
0
        /// <summary>
        /// 递归装载主窗体框架树
        /// </summary>
        /// <param name="key"></param>
        /// <param name="startNodes"></param>
        public void LoadFrameTreeFromDB(string key, TreeNodeCollection startNodes)
        {
            if (startNodes == null) throw new Exception("调用LoadFrameTreeFromDB失败,startNodes未指定!");

            //string tmpStr = "select * from FrmworkTree where isVisable=1 and FatherCode='" + key + "'";//有效的树信息
            try
            {
                DataTable table = FrmworkTreeNode.GetChildNodes(key);
                foreach (DataRow row in table.Rows)
                {
                    FrmworkTreeNode tmpNode = new FrmworkTreeNode();
                    tmpNode.NodeId = row["SelfCode"].ToString();
                    tmpNode.FatherId = row["FatherCode"].ToString();
                    tmpNode.ImageIndex = Convert.ToInt16(row["ImageIndex"]);
                    tmpNode.SelectedImageIndex = Convert.ToInt16(row["ImageIndex"]); 
                    tmpNode.Text = row["Caption"].ToString();
                    tmpNode.DllClassName = row["DllClassName"].ToString();
                    tmpNode.DllFileName = row["DllFileName"].ToString();
                    tmpNode.DllMethodName = row["DllMethodName"].ToString();
                    tmpNode.FormName = row["FormName"].ToString();
                    tmpNode.MouseIsClick = Convert.ToBoolean(row["MouseIsClick"]);
                    tmpNode.BlankWindows = Convert.ToBoolean(row["BlankWindows"]);
                    tmpNode.WindowsSDI = Convert.ToBoolean(row["SDIWindows"]);
                    tmpNode.CanVisable = Convert.ToBoolean(row["IsVisable"]);
                    tmpNode.ContextMenuStrip = frktreeContextMenuStrip;
                    tmpNode.Refresh = true;
                    tmpNode.NodeType = row["NodeType"].ToString();
                    startNodes.Add(tmpNode);
                    //LoadFrameTreeFromDB(tmpNode.NodeId, tmpNode.Nodes);

                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }