/// <summary>
        /// 角度输入
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private static void AngleKeyPress(object sender, KeyPressEventArgs e)
        {
            TextBox textBox = sender as TextBox;

            if ((e.KeyChar > (char)47 && e.KeyChar < (char)58) || e.KeyChar == (char)8 || e.KeyChar == (char)46 || e.KeyChar == (char)45)
            {
                switch (e.KeyChar)
                {
                    //小数点
                    case (char)46:
                        if (textBox.Text.Contains((char)46))
                        {
                            textBox.SelectionStart = textBox.Text.IndexOf((char)46) + 1;
                            textBox.SelectionLength = 0;
                            e.Handled = true;
                        }
                        break;
                    //负号
                    case (char)45:
                        if (!textBox.Text.Contains((char)45))
                        {
                            textBox.Text = "-" + textBox.Text;
                        }
                        textBox.SelectionStart = textBox.Text.IndexOf((char)45) + 1;
                        textBox.SelectionLength = 0;
                        e.Handled = true;
                        break;
                    //数字
                    default:
                        if ((e.KeyChar > (char)47 && e.KeyChar < (char)58))
                        {
                            //add by dwq 2015-06-01 对含有负号的情况特殊处理
                            if (textBox.Text.Contains("-"))
                            {
                                //负号的索引
                                int negIdx = textBox.Text.IndexOf((char)45);

                                //不能再负号前面输入数字
                                if (textBox.SelectionStart + textBox.SelectionLength <= negIdx)
                                {
                                    e.Handled = true;
                                    break;  //不再进行后续处理
                                }
                            }

                            double num = double.Parse(textBox.Text.Remove(textBox.SelectionStart, textBox.SelectionLength).Insert(textBox.SelectionStart, e.KeyChar.ToString()));

                            if (num > 360 || num < -360)
                            {
                                e.Handled = true;
                            }
                            //if (textBox.SelectedText.Contains((char)46) || textBox.SelectedText.Contains((char)45))
                            //{
                            //    e.Handled = true;
                            //}
                        }

                        break;
                }
            }
            else
            {
                TipForm tf = new TipForm(textBox, "请输入合法的角度数据!");
                tf.Show();

                ////add by dwq 2015-05-27 激活父窗体
                //Form frm = UtilClass.SearchOwner(textBox) as Form;
                //frm.Activate();

                textBox.Focus();

                e.Handled = true;
            }
        }
        /// <summary>
        /// 角度离开
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private static void AngleLeave(object sender, EventArgs e)
        {
            TextBox textBox = sender as TextBox;

            if (string.IsNullOrEmpty(textBox.Text))
                return;

            double d = 0;
            if (double.TryParse(textBox.Text, out d))
            {
                textBox.Text = d.ToString();
            }
            else
            {
                TipForm tip = new TipForm(textBox, "不合法的角度数据!");
                tip.Show();

                textBox.Text = null;
            }
        }
        /// <summary>
        /// 实数输入(支持科学计数法)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public static void RealNumberWithSciKeyPress(object sender, KeyPressEventArgs e)
        {
            TextBox textBox = sender as TextBox;

            //是否是科学计数法
            bool IsSciNotation = false;
            //字母E所处位置,默认-1
            int EPosition = -1;

            //输入前文本内容
            string OriText = textBox.Text;
            int SelectionStart = textBox.SelectionStart;
            int SelectionLen = textBox.SelectionLength;

            if (OriText.ToLower().Contains("e"))
            {
                IsSciNotation = true;
                EPosition = OriText.ToLower().IndexOf("e");
            }

            //可接收的字符有数字0-9,字母E或e,退格,小数点以及负号
            if ((e.KeyChar > (char)47 && e.KeyChar < (char)58) || e.KeyChar == (char)8 || e.KeyChar == (char)46 || e.KeyChar == (char)45 || e.KeyChar == 'E' || e.KeyChar == 'e')
            {

                switch (e.KeyChar)
                {
                    //小数点
                    case (char)46:
                        if (IsSciNotation)
                        {
                            if (textBox.Text.Contains((char)46))
                            {
                                textBox.SelectionStart = textBox.Text.IndexOf((char)46) + 1;
                                textBox.SelectionLength = 0;
                            }

                            //不能在指数位置输入小数
                            e.Handled = true;
                        }
                        break;
                    //负号
                    case (char)45:
                        if (!textBox.Text.Contains((char)45))
                        {
                            textBox.Text = "-" + textBox.Text;
                        }
                        textBox.SelectionStart = textBox.Text.IndexOf((char)45) + 1;
                        textBox.SelectionLength = 0;
                        e.Handled = true;
                        break;
                    //科学计数法
                    case 'E':
                        if (IsSciNotation)
                        {
                            textBox.SelectionStart = EPosition + 1;
                            textBox.SelectionLength = 0;

                            e.Handled = true;
                        }
                        else
                        {
                            IsSciNotation = true;
                        }
                        break;
                    case 'e':
                        if (IsSciNotation)
                        {
                            textBox.SelectionStart = EPosition + 1;
                            textBox.SelectionLength = 0;

                            e.Handled = true;
                        }
                        else
                        {
                            IsSciNotation = true;
                        }
                        break;
                    //数字
                    default:
                        if ((e.KeyChar > (char)47 && e.KeyChar < (char)58))
                        {
                            //if (textBox.SelectedText.Contains((char)46) || textBox.SelectedText.Contains((char)45))
                            //{
                            //    e.Handled = true;
                            //}

                            //add by dwq 2015-06-01 对含有负号的情况特殊处理
                            if (textBox.Text.Contains("-"))
                            {
                                //负号的索引
                                int negIdx = textBox.Text.IndexOf((char)45);

                                //不能再负号前面输入数字
                                if (textBox.SelectionStart + textBox.SelectionLength <= negIdx)
                                {
                                    e.Handled = true;
                                }
                            }
                        }
                        break;
                }
            }
            else
            {
                TipForm tf = new TipForm(textBox, "请输入合法的实数数据!");
                tf.Show();

                textBox.Focus();

                ////add by dwq 2015-05-27 激活父窗体
                //Form frm = UtilClass.SearchOwner(textBox) as Form;
                //frm.Activate();

                e.Handled = true;
            }
        }
        /// <summary>
        /// 实数离开(支持科学计数法)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public static void RealNumberWithSciLeave(object sender, EventArgs e)
        {
            TextBox textBox = sender as TextBox;

            if (string.IsNullOrEmpty(textBox.Text))
                return;

            if (!IsSciExpressLegal(textBox.Text))
            {
                TipForm tip = new TipForm(textBox, "不合法的实数类型表达式!");
                tip.Show();

                textBox.Text = null;
            }
        }
        /// <summary>
        /// 正整数离开(支持科学计数法)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public static void PositiveIntegerNumberWithSciLeave(object sender, EventArgs e)
        {
            TextBox textBox = sender as TextBox;

            if (string.IsNullOrEmpty(textBox.Text))
                return;

            if (IsSciExpressLegal(textBox.Text) && !(textBox.Text.Contains('-')))
            {
                //校验是否为整数
                string content = textBox.Text.ToLower();

                if (content.Contains('e'))
                {
                    int EPosition = content.IndexOf('e');
                    string basePart = content.Substring(0, EPosition);
                    string expPart = content.Substring(EPosition + 1);

                    if (basePart.Contains('.'))
                    {
                        //小数点位置
                        int dotPosition = basePart.IndexOf('.');
                        //小数位数
                        int decimalLen = basePart.Length - 1 - dotPosition;

                        int expNumber = Convert.ToInt32(expPart);

                        if (decimalLen > expNumber)
                        {
                            TipForm tip = new TipForm(textBox, "不合法的正整数类型科学计数法表达式!");
                            tip.Show();

                            textBox.Text = null;
                        }
                    }
                }
            }
            else
            {
                TipForm tip = new TipForm(textBox, "不合法的正整数数据!");
                tip.Show();

                textBox.Text = null;
            }
        }
        /// <summary>
        /// 正实数输入(支持科学计数法)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public static void PositiveRealNumberWithSciKeyPress(object sender, KeyPressEventArgs e)
        {
            TextBox textBox = sender as TextBox;

            //是否是科学计数法
            bool IsSciNotation = false;
            //字母E所处位置,默认-1
            int EPosition = -1;

            //输入前文本内容
            string OriText = textBox.Text;
            int SelectionStart = textBox.SelectionStart;
            int SelectionLen = textBox.SelectionLength;

            if (OriText.ToLower().Contains("e"))
            {
                IsSciNotation = true;
                EPosition = OriText.ToLower().IndexOf("e");
            }

            if ((e.KeyChar > (char)47 && e.KeyChar < (char)58) || e.KeyChar == (char)8 || e.KeyChar == (char)46 || e.KeyChar == 'E' || e.KeyChar == 'e')
            {
                switch (e.KeyChar)
                {
                    //小数点
                    case (char)46:
                        if (IsSciNotation)
                        {
                            if (textBox.Text.Contains((char)46))
                            {
                                textBox.SelectionStart = textBox.Text.IndexOf((char)46) + 1;
                                textBox.SelectionLength = 0;
                            }

                            //不能在指数位置输入小数
                            e.Handled = true;
                        }
                        break;
                    //科学计数法
                    case 'E':
                        if (IsSciNotation)
                        {
                            textBox.SelectionStart = EPosition + 1;
                            textBox.SelectionLength = 0;

                            e.Handled = true;
                        }
                        else
                        {
                            IsSciNotation = true;
                        }
                        break;
                    case 'e':
                        if (IsSciNotation)
                        {
                            textBox.SelectionStart = EPosition + 1;
                            textBox.SelectionLength = 0;

                            e.Handled = true;
                        }
                        else
                        {
                            IsSciNotation = true;
                        }
                        break;
                    //数字
                    default:
                        if ((e.KeyChar > (char)47 && e.KeyChar < (char)58))
                        {
                            if (textBox.SelectedText.Contains((char)46))
                            {
                                e.Handled = true;
                            }
                        }
                        break;
                }
            }
            else
            {
                TipForm tf = new TipForm(textBox, "请输入合法的正实数数据!");
                tf.Show();

                e.Handled = true;
            }
        }
        /// <summary>
        /// 行一致离开
        /// </summary>
        /// <param name="dataGridView"></param>
        /// <returns></returns>
        private static bool RowIdentical(DataGridView dataGridView)
        {
            //add by dwq 2015-05-27 先提交最后一次输入DataGridView的数据
            if (dataGridView.IsCurrentCellDirty)
            {
                dataGridView.CommitEdit(DataGridViewDataErrorContexts.Commit);
            }

            List<object> objListNull = new List<object>();
            List<object> objListNotNull = new List<object>();
            foreach (DataGridViewRow row in dataGridView.Rows)
            {
                if (!row.IsNewRow)
                {
                    for (int i = 0; i < row.Cells.Count; i++)
                    {
                        if (row.Cells[i].Value == null || row.Cells[i].Value.ToString().Trim() == string.Empty)
                        {
                            objListNull.Add(row.Cells[i].Value);
                        }
                        else
                        {
                            objListNotNull.Add(row.Cells[i].Value);
                        }
                    }
                }
                if (objListNull.Count != 0 && objListNotNull.Count != 0)
                {
                    TipForm tip = new TipForm(dataGridView, "请完整填写当前表格整行数据");
                    tip.Show();

                    if (!dataGridView.Parent.Focused)
                    {
                        dataGridView.Parent.Focus();
                    }
                    dataGridView.Focus();

                    //Form frm = UtilClass.SearchOwner(dataGridView) as Form;
                    //frm.Activate();

                    foreach (DataGridViewCell item in row.Cells)
                    {
                        if (item.Value == null)
                        {
                            dataGridView.Focus();
                            dataGridView.CurrentCell = item;
                        }
                    }
                    return false;
                }
            }
            return true;
        }
        /// <summary>
        /// 整数输入(支持科学计数法)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public static void IntegerNumberWithSciKeyPress(object sender, KeyPressEventArgs e)
        {
            TextBox textBox = sender as TextBox;

            //是否是科学计数法
            bool IsSciNotation = false;
            //字母E所处位置,默认-1
            int EPosition = -1;

            //输入前文本内容
            string OriText = textBox.Text;
            int SelectionStart = textBox.SelectionStart;
            int SelectionLen = textBox.SelectionLength;

            if (OriText.ToLower().Contains("e"))
            {
                IsSciNotation = true;
                EPosition = OriText.ToLower().IndexOf("e");
            }

            if ((e.KeyChar > (char)47 && e.KeyChar < (char)58) || e.KeyChar == (char)8 || e.KeyChar == (char)45 || e.KeyChar == 'E' || e.KeyChar == 'e')
            {
                switch (e.KeyChar)
                {
                    //负号
                    case (char)45:
                        if (!textBox.Text.Contains((char)45))
                        {
                            textBox.Text = "-" + textBox.Text;
                        }
                        textBox.SelectionStart = textBox.Text.IndexOf((char)45) + 1;
                        textBox.SelectionLength = 0;
                        e.Handled = true;
                        break;
                    //科学计数法
                    case 'E':
                        if (IsSciNotation)
                        {
                            textBox.SelectionStart = EPosition + 1;
                            textBox.SelectionLength = 0;

                            e.Handled = true;
                        }
                        else
                        {
                            IsSciNotation = true;
                        }
                        break;
                    case 'e':
                        if (IsSciNotation)
                        {
                            textBox.SelectionStart = EPosition + 1;
                            textBox.SelectionLength = 0;

                            e.Handled = true;
                        }
                        else
                        {
                            IsSciNotation = true;
                        }
                        break;
                    //数字
                    default:
                        if ((e.KeyChar > (char)47 && e.KeyChar < (char)58))
                        {
                            //if (textBox.SelectedText.Contains((char)46) || textBox.SelectedText.Contains((char)45))
                            //{
                            //    e.Handled = true;
                            //}

                            //add by dwq 2015-06-01 对含有负号的情况特殊处理
                            if (textBox.Text.Contains("-"))
                            {
                                //负号的索引
                                int negIdx = textBox.Text.IndexOf((char)45);

                                //不能再负号前面输入数字
                                if (textBox.SelectionStart + textBox.SelectionLength <= negIdx)
                                {
                                    e.Handled = true;
                                }
                            }
                        }
                        break;
                }
            }
            else
            {
                TipForm tf = new TipForm(textBox, "不合法的整数数据!");
                tf.Show();

                e.Handled = true;
            }
        }
        /// <summary>
        /// 实数输入
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private static void RealNumberKeyPress(object sender, KeyPressEventArgs e)
        {
            TextBox textBox = sender as TextBox;

            //可接收的字符有数字0-9,退格,小数点以及负号
            if ((e.KeyChar > (char)47 && e.KeyChar < (char)58) || e.KeyChar == (char)8 || e.KeyChar == (char)46 || e.KeyChar == (char)45)
            {

                switch (e.KeyChar)
                {
                    //小数点
                    case (char)46:
                        if (textBox.Text.Contains((char)46))
                        {
                            textBox.SelectionStart = textBox.Text.IndexOf((char)46) + 1;
                            textBox.SelectionLength = 0;
                            e.Handled = true;
                        }
                        break;
                    //负号
                    case (char)45:
                        if (!textBox.Text.Contains((char)45))
                        {
                            textBox.Text = "-" + textBox.Text;
                        }
                        textBox.SelectionStart = textBox.Text.IndexOf((char)45) + 1;
                        textBox.SelectionLength = 0;
                        e.Handled = true;
                        break;
                    //数字
                    default:
                        if ((e.KeyChar > (char)47 && e.KeyChar < (char)58))
                        {
                            //if (textBox.SelectedText.Contains((char)46) || textBox.SelectedText.Contains((char)45))
                            //{
                            //    e.Handled = true;
                            //}

                            //add by dwq 2015-06-01 对含有负号的情况特殊处理
                            if (textBox.Text.Contains("-"))
                            {
                                //负号的索引
                                int negIdx = textBox.Text.IndexOf((char)45);

                                //不能再负号前面输入数字
                                if (textBox.SelectionStart + textBox.SelectionLength <= negIdx)
                                {
                                    e.Handled = true;
                                }
                            }
                        }
                        break;
                }
            }
            else
            {
                TipForm tf = new TipForm(textBox, "请输入合法的实数数据!");
                tf.Show();

                textBox.Focus();

                ////add by dwq 2015-05-27 激活父窗体
                //Form frm = UtilClass.SearchOwner(textBox) as Form;
                //frm.Activate();

                e.Handled = true;
            }
        }
        /// <summary>
        /// 正实数输入
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private static void PositiveRealNumberKeyPress(object sender, KeyPressEventArgs e)
        {
            TextBox textBox = sender as TextBox;

            if ((e.KeyChar > (char)47 && e.KeyChar < (char)58) || e.KeyChar == (char)8 || e.KeyChar == (char)46)
            {
                switch (e.KeyChar)
                {
                    //小数点
                    case (char)46:
                        if (textBox.Text.Contains((char)46))
                        {
                            textBox.SelectionStart = textBox.Text.IndexOf((char)46) + 1;
                            textBox.SelectionLength = 0;
                            e.Handled = true;
                        }
                        break;
                    //数字
                    default:
                        if ((e.KeyChar > (char)47 && e.KeyChar < (char)58))
                        {
                            if (textBox.SelectedText.Contains((char)46))
                            {
                                e.Handled = true;
                            }
                        }
                        break;
                }
            }
            else
            {
                TipForm tf = new TipForm(textBox, "输入的不是正实数。");
                tf.Show();

                e.Handled = true;
            }
        }
        /// <summary>
        /// (正)整数离开
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private static void integerNumberLeave(object sender, EventArgs e)
        {
            TextBox textBox = sender as TextBox;

            if (string.IsNullOrEmpty(textBox.Text))
                return;

            int d = 0;
            if (int.TryParse(textBox.Text, out d))
            {
                textBox.Text = d.ToString();
            }
            else
            {
                TipForm tip = new TipForm(textBox, "不合法的整数数据!");
                tip.Show();

                textBox.Text = null;
            }
        }
        /// <summary>
        /// 判断按钮对应的控件是否有空值
        /// </summary>
        /// <param name="btnClass">按钮控件实体类</param>
        /// <returns></returns>
        private static bool HasCtrlsNull(ButtonClass btnClass)
        {
            bool flag = false;

            if (btnClass._Controls == null || btnClass._Controls.Count < 0)
            {
                //窗体中所有控件
                Form FormOwner = UtilClass.SearchOwner(btnClass._FrmControl) as Form;
                List<Control> FormControls = UtilClass.InitControls(FormOwner);

                string[] ctrlTmps = btnClass._CtrlStr.Split(',');

                foreach (string item in ctrlTmps)
                {
                    Control FormControl = FormControls.Where(n => n.Name.Equals(item)).FirstOrDefault();

                    if (FormControl != null && FormControl.Name.Equals(item))
                    {
                        ControlClass SubCtrl = new ControlClass();
                        SubCtrl._NameSpace = btnClass._NameSpace;
                        SubCtrl._Class = btnClass._Class;
                        SubCtrl._Name = item;
                        SubCtrl._ControlType = FormControl.GetType().Name;
                        SubCtrl._FrmControl = FormControl;

                        btnClass._Controls.Add(SubCtrl);
                    }
                }
            }

            string tipFailureMsg = "请完整输入必填项信息!";
            string tipSuccessMsg = string.Empty;
            if (null != btnClass._Tips[1])
            {
                tipFailureMsg = btnClass._Tips[1].ToString();
            }
            if (null != btnClass._Tips[0])
            {
                tipSuccessMsg = btnClass._Tips[0].ToString();
            }

            foreach (ControlClass item in btnClass._Controls)
            {
                //Control ctrl = item._FrmControl;
                //获取窗体对应控件
                Control ctrl = item._FrmControl;
                if (ctrl != null)
                {
                    switch (item._ControlType.Trim().ToLower())
                    {
                        case "textbox":
                            TextBox textBox = ctrl as TextBox;
                            if (string.IsNullOrEmpty(textBox.Text))
                            {
                                if (IsCommentShow)
                                {
                                    TipForm tip = new TipForm(btnClass._FrmControl, tipFailureMsg);
                                    tip.Show();

                                    //设置焦点
                                    textBox.Focus();
                                }

                                flag = true;

                                //切换到指定TabPage
                                TabPage tabPage = UtilClass.SearchOwnerTabPage(ctrl) as TabPage;
                                TabControl tabControl = tabPage.Parent as TabControl;
                                if (tabControl.SelectedTab != tabPage)
                                {
                                    tabControl.SelectedTab = tabPage;
                                }
                                break;
                            }
                            break;
                        case "datagridview":
                            DataGridView grid = ctrl as DataGridView;
                            if (grid.Rows.Count <= 0 || grid.NewRowIndex == 0)
                            {
                                if (IsCommentShow)
                                {
                                    TipForm tip = new TipForm(btnClass._FrmControl, tipFailureMsg);
                                    tip.Show();

                                    grid.Focus();
                                }
                                flag = true;

                                //切换到指定TabPage
                                TabPage tabPage = UtilClass.SearchOwnerTabPage(ctrl) as TabPage;
                                TabControl tabControl = tabPage.Parent as TabControl;
                                if (tabControl.SelectedTab != tabPage)
                                {
                                    tabControl.SelectedTab = tabPage;
                                }
                            }

                            //判断必填数据列
                            if (grid.Rows.Count > 0)
                            {
                                int ColCount = grid.Columns.Count;

                                //获取DataGridView必填数据列索引
                                List<int> ColIndex = item._NotNullIndex;

                                foreach (DataGridViewRow row in grid.Rows)
                                {
                                    //忽略新行
                                    if (row.Index == grid.NewRowIndex)
                                        continue;

                                    for (int c = 0; c < ColIndex.Count; c++)
                                    {
                                        if (row.Cells[ColIndex[c]].Value == null || string.IsNullOrEmpty(row.Cells[ColIndex[c]].Value.ToString()))
                                        {
                                            flag = true;

                                            //切换到指定TabPage
                                            TabPage tabPage = UtilClass.SearchOwnerTabPage(ctrl) as TabPage;
                                            TabControl tabControl = tabPage.Parent as TabControl;
                                            if (tabControl.SelectedTab != tabPage)
                                            {
                                                tabControl.SelectedTab = tabPage;
                                            }

                                            TipForm tip = new TipForm(grid, string.Format("DataGridView的第{0}列不能为空!", ColIndex[c] + 1));
                                            tip.Show();

                                            grid.CurrentCell = row.Cells[ColIndex[c]];
                                            grid.BeginEdit(true);

                                            break;
                                        }
                                    }
                                    if (flag)
                                    {
                                        break;  //若一出现空数据,即刻跳出循环
                                    }
                                }
                            }
                            break;
                        default:

                            break;
                    }
                }

                if (flag)
                {
                    ////切换到指定TabPage
                    //TabPage tabPage = UtilClass.SearchOwnerTabPage(ctrl) as TabPage;

                    //TabControl tabControl = tabPage.Parent as TabControl;

                    //if (tabControl.SelectedTab != tabPage)
                    //{
                    //    tabControl.SelectedTab = tabPage;
                    //}

                    break;  //出现没有填内容的直接跳出循环
                }
            }

            if (!flag)
            {
                if (!string.IsNullOrEmpty(tipSuccessMsg))
                {
                    TipForm tip = new TipForm(btnClass._FrmControl, tipSuccessMsg);
                    tip.Show();
                }
            }

            return flag;
        }
        /// <summary>
        /// 重名离开
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private static void DuplicationNameLeave(object sender, EventArgs e)
        {
            TextBox textBox = sender as TextBox;
            textBox.Text = textBox.Text.Trim();
            if (NameList.Contains(textBox.Text.Trim()))
            {
                //MessageBox.Show("名称重复,请重新命名。");
                TipForm tip = new TipForm(textBox, "名称重复,请重新命名");
                tip.Show();

                textBox.Focus();
            }
        }