/// <summary>
        /// 创建登录框窗体
        /// </summary>
        /// <param name="oParent">父窗体</param>
        /// <param name="oSender">窗体名称</param>
        /// <param name="oEvent">Socket事件</param>
        /// <returns>验证结果</returns>
        public bool CallLogin(object oParent, object oSender, object oEvent)
        {
            //执行结果
            bool bResult = false;
            //判断内容
            string strItem = (string)oSender;
            //模块入口点
            string strEntrance = "CreateModule";

            if (p_Apps.ContainsKey(strItem))
            {
                CModuleForms mModuleForm = (CModuleForms)p_Apps[strItem];
                Assembly     asm         = Assembly.LoadFile(mModuleForm.Path);
                Type[]       types       = asm.GetTypes();

                foreach (Type tCheckType in types)
                {
                    if (tCheckType.IsSubclassOf(typeof(System.Windows.Forms.Form)) && tCheckType.Name == strItem)
                    {
                        object o = Activator.CreateInstance(tCheckType);

                        try
                        {
                            MethodInfo mi = tCheckType.GetMethod(strEntrance, new Type[] { typeof(object), typeof(object) });
                            bResult = (bool)mi.Invoke(o, new Object[] { oParent, oEvent });
                        }
                        catch (Exception e)
                        {
                            bResult = false;

                            CEnum.TLogData tLogData = new CEnum.TLogData();

                            tLogData.strDescribe  = "调用模块信息出错!";
                            tLogData.strException = e.Message;

                            //throw new Exception("调用模块信息出错!");
                        }
                    }
                }
            }
            else
            {
                bResult = false;

                CEnum.TLogData tLogData = new CEnum.TLogData();

                tLogData.iSort        = 2;
                tLogData.strDescribe  = "未找到相应模块信息!";
                tLogData.strException = "N/A";

                //throw new Exception("未找到相应模块信息!");
            }

            return(bResult);
        }
        /// <summary>
        /// 调用模块窗体 -- 默认方法
        /// </summary>
        /// <param name="oParent">父窗体</param>
        /// <param name="oSender">窗体类</param>
        /// 调用示例:
        ///		1、模块窗体中设置属性
        ///				[C_Global.CModuleAttribute("显示名称", "窗体类名", "功能描述", "隶属范围")]
        ///		2、主窗体中声明变量并赋值(根据需要设置私有或公共类型变量):
        ///				Hashtable m_Apps = C_Global.CModule.Module(模块所在路径,模块扩展名);
        ///		2、根据应用程序模式:
        ///			SDI模式:
        ///				oParent 参数为 NULL (空)
        ///				oSender 参数为 m_Apps的属性(根据函数体内判断选择相应属性)
        ///			MDI模式
        ///				主窗体声明私有静态变量:private static 主窗体类名 定义名称 = null;
        ///				主线程中创建主窗体类 定义名称 = new 主窗体类名();
        ///				修改默认方法 Application.Run(定义名称);
        ///				oParent 参数为 定义名称
        ///				oSender 参数为 m_Apps的属性(根据函数体内判断选择相应属性)
        public void CallForm(object oParent, object oSender)
        {
            string strItem = (string)oSender;

            if (p_Apps.ContainsKey(strItem))
            {
                if (((CModuleForms)p_Apps[strItem]).Form == null)
                {
                    CModuleForms mModuleForm = (CModuleForms)p_Apps[strItem];
                    Assembly     asm         = Assembly.LoadFile(mModuleForm.Path);
                    Type[]       types       = asm.GetTypes();

                    foreach (Type tCheckType in types)
                    {
                        //根据p_Apps属性进行判断
                        if (tCheckType.Name == strItem)
                        {
                            System.Windows.Forms.Form FrmChild = (System.Windows.Forms.Form)Activator.CreateInstance(tCheckType);
                            if (oParent != null)
                            {
                                FrmChild.MdiParent = (System.Windows.Forms.Form)oParent;
                            }
                            FrmChild.Name = strItem;
                            FrmChild.Show();

                            FrmChild.Closing += new CancelEventHandler(CloseForm);

                            ((CModuleForms)p_Apps[strItem]).Form = FrmChild;
                        }
                    }
                }
                else
                {
                    ((CModuleForms)p_Apps[strItem]).Form.Activate();
                }
            }
            else
            {
                CEnum.TLogData tLogData = new CEnum.TLogData();

                tLogData.iSort        = 2;
                tLogData.strDescribe  = "未找到相应模块信息!";
                tLogData.strException = "N/A";

                //throw new Exception("未找到相应模块信息!");
            }
        }
        /// <summary>
        /// 调用模块窗体 -- 传 CSocketEvent 方法
        /// </summary>
        /// <param name="oParent">父窗体</param>
        /// <param name="oSender">窗体类</param>
        /// <param name="oEvent">CSocketEvent 类</param>
        /// 调用示例:
        ///			使用方法同默认方法基本一致,仅需要在模块窗体内声明函数
        ///			函数声明方法:
        ///				public static Form CreateModule(object oParent, object oEvent)
        ///				{
        ///					ModuleFrm mModuleFrm = new ModuleFrm();
        ///					mModuleFrm.m_ClientEvent = (CSocketEvent)oEvent;(模块窗体内声明的变量)
        ///
        ///					//MDI模式
        ///					if (oParent != null)
        ///					{
        ///						mModuleFrm.MdiParent = (Form)oParent;
        ///						mModuleFrm.Show();
        ///					}
        ///					//SDI模式
        ///					else
        ///					{
        ///						mModuleFrm.ShowDialog();
        ///					}
        ///
        ///					return mModuleFrm;
        ///				}
        public void CallForm(object oParent, object oSender, object oEvent)
        {
            //MDI 控制
            bool bDisplay = false;
            //判断内容
            string strItem = (string)oSender;
            //模块入口点
            string strEntrance = "CreateModule";

            //MDI模式
            if (oParent != null)
            {
                //保证子窗体唯一性
                if (((System.Windows.Forms.Form)oParent).MdiChildren.GetLength(0) > 0)
                {
                    for (int i = 0; i < ((System.Windows.Forms.Form)oParent).MdiChildren.GetLength(0); i++)
                    {
                        if (((System.Windows.Forms.Form)oParent).MdiChildren[i].Name == strItem)
                        {
                            bDisplay = true;
                            ((System.Windows.Forms.Form)oParent).MdiChildren[i].Activate();
                            return;
                        }
                        else
                        {
                            bDisplay = false;
                        }
                    }

                    if (!bDisplay)
                    {
                        ((CModuleForms)p_Apps[strItem]).Form = null;

                        if (p_Apps.ContainsKey(strItem))
                        {
                            if (((CModuleForms)p_Apps[strItem]).Form == null)
                            {
                                CModuleForms mModuleForm = (CModuleForms)p_Apps[strItem];
                                Assembly     asm         = Assembly.LoadFile(mModuleForm.Path);
                                Type[]       types       = asm.GetTypes();

                                foreach (Type tCheckType in types)
                                {
                                    if (tCheckType.IsSubclassOf(typeof(System.Windows.Forms.Form)) && tCheckType.Name == strItem)
                                    {
                                        object o = Activator.CreateInstance(tCheckType);

                                        try
                                        {
                                            MethodInfo mi = tCheckType.GetMethod(strEntrance, new Type[] { typeof(object), typeof(object) });
                                            ((CModuleForms)p_Apps[strItem]).Form = (System.Windows.Forms.Form)mi.Invoke(o, new Object[] { oParent, oEvent });
                                        }
                                        catch (Exception e)
                                        {
                                            CEnum.TLogData tLogData = new CEnum.TLogData();

                                            tLogData.iSort        = 5;
                                            tLogData.strDescribe  = "调用模块信息出错!";
                                            tLogData.strException = e.Message;

                                            //throw new Exception("调用模块信息出错!");
                                        }
                                    }
                                }
                            }
                            else
                            {
                                ((CModuleForms)p_Apps[strItem]).Form.Activate();
                            }
                        }
                        else
                        {
                            CEnum.TLogData tLogData = new CEnum.TLogData();

                            tLogData.iSort        = 2;
                            tLogData.strDescribe  = "未找到相应模块信息!";
                            tLogData.strException = "N/A";

                            //throw new Exception("未找到相应模块信息!");
                        }
                    }
                }
                else
                {
                    if (p_Apps.ContainsKey(strItem))
                    {
                        ((CModuleForms)p_Apps[strItem]).Form = null;

                        if (((CModuleForms)p_Apps[strItem]).Form == null)
                        {
                            CModuleForms mModuleForm = (CModuleForms)p_Apps[strItem];
                            Assembly     asm         = Assembly.LoadFile(mModuleForm.Path);
                            Type[]       types       = asm.GetTypes();

                            foreach (Type tCheckType in types)
                            {
                                if (tCheckType.IsSubclassOf(typeof(System.Windows.Forms.Form)) && tCheckType.Name == strItem)
                                {
                                    object o = Activator.CreateInstance(tCheckType);

                                    try
                                    {
                                        MethodInfo mi = tCheckType.GetMethod(strEntrance, new Type[] { typeof(object), typeof(object) });
                                        ((CModuleForms)p_Apps[strItem]).Form = (System.Windows.Forms.Form)mi.Invoke(o, new Object[] { oParent, oEvent });
                                    }
                                    catch (Exception e)
                                    {
                                        CEnum.TLogData tLogData = new CEnum.TLogData();

                                        tLogData.iSort        = 5;
                                        tLogData.strDescribe  = "调用模块信息出错!";
                                        tLogData.strException = e.Message;

                                        //throw new Exception("调用模块信息出错!");
                                    }
                                }
                            }
                        }
                        else
                        {
                            ((CModuleForms)p_Apps[strItem]).Form.Activate();
                        }
                    }
                    else
                    {
                        CEnum.TLogData tLogData = new CEnum.TLogData();

                        tLogData.iSort        = 2;
                        tLogData.strDescribe  = "未找到相应模块信息!";
                        tLogData.strException = "N/A";

                        //throw new Exception("未找到相应模块信息!");
                    }
                }
            }
            //SDI模式
            else
            {
                if (p_Apps.ContainsKey(strItem))
                {
                    ((CModuleForms)p_Apps[strItem]).Form = null;

                    if (((CModuleForms)p_Apps[strItem]).Form == null)
                    {
                        CModuleForms mModuleForm = (CModuleForms)p_Apps[strItem];
                        Assembly     asm         = Assembly.LoadFile(mModuleForm.Path);
                        Type[]       types       = asm.GetTypes();

                        foreach (Type tCheckType in types)
                        {
                            if (tCheckType.IsSubclassOf(typeof(System.Windows.Forms.Form)) && tCheckType.Name == strItem)
                            {
                                object o = Activator.CreateInstance(tCheckType);

                                try
                                {
                                    MethodInfo mi = tCheckType.GetMethod(strEntrance, new Type[] { typeof(object), typeof(object) });
                                    ((CModuleForms)p_Apps[strItem]).Form = (System.Windows.Forms.Form)mi.Invoke(o, new Object[] { oParent, oEvent });
                                }
                                catch (Exception e)
                                {
                                    CEnum.TLogData tLogData = new CEnum.TLogData();

                                    tLogData.iSort        = 5;
                                    tLogData.strDescribe  = "调用模块信息出错!";
                                    tLogData.strException = e.Message;

                                    //throw new Exception("调用模块信息出错!");
                                }
                            }
                        }
                    }
                    else
                    {
                        ((CModuleForms)p_Apps[strItem]).Form.Activate();
                    }
                }
                else
                {
                    CEnum.TLogData tLogData = new CEnum.TLogData();

                    tLogData.iSort        = 2;
                    tLogData.strDescribe  = "未找到相应模块信息!";
                    tLogData.strException = "N/A";

                    //throw new Exception("未找到相应模块信息!");
                }
            }
        }