/// <summary>
        /// 生产菜单
        /// </summary>
        public void BuildMenu()
        {
            DataRow[] rowArray1 = null;
            DataRow[] rowArray2 = null;
            string    groupNo;
            string    groupName;
            string    menuID;
            MenuStrip mainMenu = new MenuStrip();

            try
            {
                LogedInUser curUser = ClientSession.GetInstance().CurrentUser;

                string clientType = UserConfigXml.GetConfigInfo("ClientType", "type");

                DataTable dt = new DataTable();
                //根据配置文件,离线或在线生成用户菜单
                if (ClientConfiguration.IsOfflineLogin)
                {
                    //离线生成菜单
                    //dt = LoginUserOfflineBLL.GetInstance("ClientDB").GetMenuOffline(curUser.UserInfo.Id, clientType);
                }
                else
                {
                    //在线生成菜单
                    //dt = ProxyFactory.UserProxy.GetMenu(curUser.UserInfo.Id, clientType);
                }

                dt = LoginUserOfflineBLL.GetInstance("ClientDB").GetMenuOffline(curUser.UserInfo.Id, clientType);
                if (dt.Rows.Count != 0)
                {
                    rowArray1 = dt.Select("father='0'");
                    for (int i = 0; i < rowArray1.Length; i++)
                    {
                        //创建一个父菜单项
                        RibbonPage newPage = new RibbonPage();
                        //给菜单赋Text值。也就是在界面上看到的值。
                        newPage.Text = rowArray1[i]["name"].ToString().Trim();
                        menuID       = rowArray1[i]["id"].ToString().Trim();
                        rowArray2    = dt.Select("father = '" + menuID + "'");
                        if (rowArray2.Length > 0)
                        {
                            CreateSubMenu(newPage, menuID, dt);
                        }

                        ribbon.Pages.Add(newPage);
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        ///  发送用户名和密码,处理可能出现的异常,登录成功后将User对象放入客户端,然后启动主窗体。
        /// </summary>
        private void login()
        {
            if (!CheckName())
            {
                this.userNameTextBox.Focus();
                this.userNameTextBox.SelectAll();
                return;
            }

            if (!CheckPassword())
            {
                this.passwordTextBox.Focus();
                this.passwordTextBox.SelectAll();
                return;
            }

            try
            {
                LogedInUser user = null;
                if (ClientConfiguration.IsOffline && (File.Exists(ClientConfiguration.LocalDBFile) && LoginUserOfflineBLL.GetInstance("ClientDB").GetUserCount(userNameTextBox.Text.Trim()) > 0))
                {
                    //离线登录,并取得当前登录用户信息
                    user = LoginUserOfflineBLL.GetInstance("ClientDB").Login(userNameTextBox.Text.Trim(), SecretUtil.MD5Encoding(passwordTextBox.Text));
                }
                else
                {
                    //在线
                    user = ProxyFactory.UserProxy.DoLogin(userNameTextBox.Text.Trim(), SecretUtil.MD5Encoding(passwordTextBox.Text));
                }

                user.HighId = CommUtilBLL.GetInstance("ClientTempDB").GetHighID();
                ClientSession.GetInstance().CurrentUser = user;
                ClientSession.GetInstance().IsLogin     = true;
            }
            catch (LoginException loginEx)
            {
                XtraMessageBox.Show(string.Format("用户登录失败:\n  {0}.", loginEx.Message), "登录失败", MessageBoxButtons.OKCancel);
                //XtraMessageBox.Show(loginEx.StackTrace);
                EventLog.WriteEntry("login", loginEx.StackTrace);
                return;
            }
            catch (Exception ex)
            {
                //这个处理不友好,发布前需要修改
                XtraMessageBox.Show(string.Format("用户登录失败:\n  {0}.", ex.Message), "登录失败", MessageBoxButtons.OKCancel);
                //XtraMessageBox.Show(ex.StackTrace);
                EventLog.WriteEntry("login", ex.StackTrace);
                return;
            }
            this.Hide();
            //usercode写入到app.config文件
            string userCode     = userNameTextBox.Text;
            string userCodeList = ClientConfiguration.UserCode;

            if (!userCodeList.Contains(userCode))
            {
                if (!string.IsNullOrEmpty(userCodeList))
                {
                    ClientConfiguration.UserCode = userCode + "," + userCodeList;
                }
                else
                {
                    ClientConfiguration.UserCode = userCode;
                }
            }
            ClientConfiguration.LastUserCode = userCode;
            ClientConfiguration.Save();

            UserConfigXml.SetConfigInfo("LoginLog", "LoginedUsersCode", ClientConfiguration.UserCode);
            UserConfigXml.SetConfigInfo("LoginLog", "LastLoginedUserCode", ClientConfiguration.LastUserCode);


            this.passwordTextBox.Text = "";
            if (!ClientConfiguration.MenuStyle.Equals("0"))
            {
                new MainForm(this).Show();
            }
            else
            {
                new ParentForm(this).Show();
            }
            //this.Close();
        }