using System; using System.Data; using System.Collections; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using System.Text.RegularExpressions; using System.Reflection; using System.Diagnostics; using System.IO; using CoreFS.CA06; using Infragistics.Win.UltraWinGrid; namespace Core.Mes.Client.Comm { public class Globals { /// /// 字符串转是否能转换成非负数 /// /// /// public static bool Is_Below_zero(string str) { try { if (IsDouble(str) && double.Parse(str) > 0) return true; else return false; } catch { return false; } } /// /// 保留指定位数小数 /// /// /// /// public static string ValWithDigits(string sVal, int Digits) { try { decimal d = decimal.Parse(sVal); string sFormat = "0"; if (Digits > 0) { sFormat += "."; for (int i = 0; i < Digits; i++) sFormat += "0"; } return d.ToString(sFormat); } catch { return ""; } } /// /// 单元格复制内容 /// /// public static void cellCopy(string strMessage) { Clipboard.SetDataObject(strMessage, false); } public static void CopyDataToDataTable(DataTable source, DataTable dest, bool clearExists) { if (source != null && dest != null) { if (clearExists) { dest.Rows.Clear(); } DataRow row; for (int i = 0; i < source.Rows.Count; i++) { row = dest.NewRow(); for (int j = 0; j < source.Columns.Count; j++) { try { if (dest.Columns.Contains(source.Columns[j].ColumnName)) { row[source.Columns[j].ColumnName] = source.Rows[i][j]; } } catch { } } dest.Rows.Add(row); } } } public static bool ContaisColumn(ref UltraGrid ultraGrid, string strColumn) { try { if (ultraGrid == null || ultraGrid.DisplayLayout.Bands[0].Columns.Count == 0 || string.IsNullOrEmpty(strColumn)) { return false; } foreach (UltraGridColumn col in ultraGrid.DisplayLayout.Bands[0].Columns) { if (col.Key.Equals(strColumn)) { return true; } } } catch { } return false; } public static void LocateRecord(ref UltraGrid ultraGrid, ref Hashtable Columns, out UltraGridRow row) { row = null; try { if (ultraGrid == null || ultraGrid.Rows.Count == 0) { return; } string strColumn = ""; object value = null; ArrayList alistCols = new ArrayList(Columns.Keys); for (int i = 0; i < alistCols.Count; i++) { strColumn = alistCols[i].ToString(); if (!ContaisColumn(ref ultraGrid, strColumn)) { return; } } bool Found = false; UltraGridRow temp = null; for (int i = 0; i < ultraGrid.Rows.Count; i++) { Found = true; ; temp = ultraGrid.Rows[i]; for (int j = 0; j < alistCols.Count; j++) { strColumn = alistCols[j].ToString(); value = Columns[strColumn]; if (!temp.Cells[strColumn].Value.Equals(value)) { Found = false; break; } } if (Found) { ultraGrid.ActiveRow = temp; row = temp; return; } } } catch (Exception ex) { string str = ex.Message; } } /// /// 清除UltraGrid的DataSource的数据 /// /// public static void ClearGridDataSourceData(Infragistics.Win.UltraWinGrid.UltraGrid ulGrid) { if (ulGrid.DataSource is DataSet) { for (int i = ((DataSet)ulGrid.DataSource).Tables.Count - 1; i >= 0; i--) { ((DataSet)ulGrid.DataSource).Tables[i].Rows.Clear(); } } } /// /// 全选选中的子行 /// /// UltraGrid /// 复选框列名 /// 值 public static void doCheckedAllChildRow(Infragistics.Win.UltraWinGrid.UltraGrid Gride, string ColumnName, string BoolValue) { Infragistics.Win.UltraWinGrid.UltraGridRow ulRow; if (Gride.ActiveRow.ParentRow == null) { ulRow = Gride.ActiveRow; } else { ulRow = Gride.ActiveRow.ParentRow; } int Index = ulRow.Index; for (int i = 0; i < Gride.Rows[Index].ChildBands[0].Rows.Count; i++) { Gride.Rows[Index].ChildBands[0].Rows[i].Cells[ColumnName].Value = BoolValue; } } /// /// 选中行中指定的子行 /// /// UltraGrid /// 复选框列名 /// 需要与子行集合比对的列名 /// 需要选中的子行集合 public static void doCheckedAppointChildRow(RowEventArgs e, string ColumnName,string ColumnName2, string[] sArgs) { for (int i = 0; i < e.Row.ChildBands[0].Rows.Count; i++) { for (int t = 0; t < sArgs.Length; t++) { if (e.Row.ChildBands[0].Rows[i].Cells[ColumnName2].Value.ToString() == sArgs[t].ToString()) { e.Row.ChildBands[0].Rows[i].Cells[ColumnName].Value = "True"; } } } } /// /// 获取子行中选中的列ID(取的列名为ID_) /// /// UltraGrid /// 复选框列名 public static string doCheckedRowValue(Infragistics.Win.UltraWinGrid.UltraGrid Gride, string ColumnName) { Infragistics.Win.UltraWinGrid.UltraGridRow ulRow; if (Gride.ActiveRow.ParentRow == null) { ulRow = Gride.ActiveRow; } else { ulRow = Gride.ActiveRow.ParentRow; } int Index = ulRow.Index; string IDString = ""; for (int i = 0; i < Gride.Rows[Index].ChildBands[0].Rows.Count; i++) { if (Gride.Rows[Index].ChildBands[0].Rows[i].Cells[ColumnName].Text == "True") { IDString += Gride.Rows[Index].ChildBands[0].Rows[i].Cells["ID_"].Value + ","; } } if (IDString != "") { IDString = IDString.Substring(0, IDString.Length - 1); } return IDString; } /// /// 选中或取消选中,当前Gride中的所有行 /// /// UltraGrid /// 复选框列名 /// 值 public static void doCheckeAllRow(Infragistics.Win.UltraWinGrid.UltraGrid Gride, string ColumnName, string BoolValue) { if (Gride != null) { for (int i = 0; i < Gride.Rows.Count; i++) { Gride.Rows[i].Cells[ColumnName].Value = BoolValue; } } } #region "数据验证" /// /// 获取字符串字节长度 /// /// 需要获取长度的字符串 /// 字符串字节长度 public static int GetStrBytesLength(string strVal) { int lenTotal = 0; int n = strVal.Length; string strWord = ""; int asc; for (int i = 0; i < n; i++) { strWord = strVal.Substring(i, 1); asc = Convert.ToChar(strWord); if (asc < 0 || asc > 127) lenTotal = lenTotal + 2; else lenTotal = lenTotal + 1; } return lenTotal; } /// /// 验证DataTable是否为空 /// /// DataTable数据 /// true为空值 public static bool IsNullTable(DataTable dt) { if (dt == null || dt.Rows.Count <= 0) { return true; } else { return false; } } /// /// 校验字符串是否只包含字母与数字 /// /// 需要校验的字符串 /// true表示符合要求,false表示不符合要求 public static bool IsOnlyLetterAndDigit(string toVerified) { Regex rx = new Regex(@"^[a-zA-Z0-9-]*$"); return rx.IsMatch(toVerified.Trim(), 0); } /// /// 检验是否是整数 /// /// 需要检验的字符串 /// 是否为整数:true是整数,false非整数 public static bool IsInt(string str) { Regex rx = new Regex(@"^[0123456789]+$"); return rx.IsMatch(str); } /// /// 检验是否是整数 /// /// /// public static bool IsInt32(string sVal) { try { Int32.Parse(sVal); return true; } catch { return false; } } /// /// 校验是否为正的浮点数 /// /// 需要检验的字符串 /// 是否为正浮点,是返回true,否则返回false public static bool IsFloat(string str) { Regex rx = new Regex(@"^[0-9]*(.)?[0-9]+$", RegexOptions.IgnoreCase); return rx.IsMatch(str.Trim()); } /// /// 验证浮点数 /// /// /// public static bool IsDouble(string sVal) { try { Double.Parse(sVal); return true; } catch { return false; } } /// /// 检验是否为数字 /// /// 需要检验的字符串 /// 是否为数字:true代表是,false代表否 public static bool IsNumber(string str) { Regex rx = new Regex(@"^[+-]?[0123456789]*[.]?[0123456789]*$"); return rx.IsMatch(str); } /// /// 检验字符串是否为日期时间 /// /// 需要检验的字符串 /// 是否为日期时间:true代表是,false代表否 public static bool IsNotDateTime(string str) { DateTime dt = new DateTime(); return (!(DateTime.TryParse(str, out dt))); } /// /// 检验字符串是否为邮政编码 /// /// 需要检验的字符串 /// 是否为邮政编码:true代表是,false代表否 public static bool IsPostCode(string str) { Regex rx = new Regex(@"^[0123456789]{6}$"); return rx.IsMatch(str); } /// /// 检验字符串是否为身份证号 /// /// 需要检验的字符串 /// 是否为身份证号:true代表是,false代表否 public static bool IsCode(string str) { Regex rx = new Regex(@"^[0123456789]{15,18}$"); return rx.IsMatch(str); } /// /// 检验字符串是否为电子邮件 /// /// 需要检验的字符串 /// 是否为电子邮件:true代表是,false代表否 public static bool IsEMail(string str) { Regex rx = new Regex(@"w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*"); return rx.IsMatch(str); } /// /// 检验字符串是否为中国地区的电话号码 /// /// 需要检验的字符串 /// 是否为中国地区的电话号码:true代表是,false代表否 public static bool IsPhoneNumber(string str) { Regex rx = new Regex(@"((d{3,4})|d{3,4}-)?d{7,8}(-d{3})*"); return rx.IsMatch(str); } /// /// 检验字符串是否为汉字 /// /// 需要检验的字符串 /// 是否为汉字:true代表是,false代表否 public static bool IsChinese(string str) { Regex rx = new Regex(@"[\u4e00-\u9fbb]+$"); return rx.IsMatch(str); } /// /// 检验字符串是否为双字节字符(包括汉字) /// /// 需要检验的字符串 /// 是否为双字节字符:true代表是,false代表否 public static bool IsDoubleByteChar(string str) { Regex rx = new Regex(@"[^x00-xff]"); return rx.IsMatch(str); } /// /// 检验字符串是否为URL地址 /// /// 需要检验的字符串 /// 是否为URL地址:true代表是,false代表否 public static bool IsURLAddress(string str) { Regex rx = new Regex(@"[a-zA-z]+://[^s]*"); return rx.IsMatch(str); } /// /// 检验字符串是否为IP地址 /// /// 需要检验的字符串 /// 是否为IP地址:true代表是,false代表否 public static bool IsIPAddress(string str) { Regex rx = new Regex(@"d+.d+.d+.d+"); return rx.IsMatch(str); } /// /// 清除字符串中的HTML标签(对于复杂的嵌套标签有时不准确) /// /// 指定的要被处理的字符串 /// 清除HTML标签后的字符串 public static string RemoveHtmlTags(string toEvaluate) { Regex rx = new Regex(@"s/<[a-zA-Z/][^>]*>//g", RegexOptions.IgnoreCase); return rx.Replace(toEvaluate, ""); } /// /// 判断输入的字符串是否完全匹配正则 /// /// 正则表达式 /// 待判断的字符串 /// public static bool IsValiable(string RegexExpression, string str) { bool blResult = false; Regex rep = new Regex(RegexExpression, RegexOptions.IgnoreCase); //blResult = rep.IsMatch(str); Match mc = rep.Match(str); if (mc.Success) { if (mc.Value == str) blResult = true; } return blResult; } /// /// 判断DataSet是否是空值 /// /// DataSet数据 /// true 空值 public static bool IsNullData(DataSet ds) { if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) { return true; } else { return false; } } /// /// 值比对 sSign:符号,sMin:最小值,sMax:最大值,sRealVal:实际值 /// /// /// /// /// /// public static bool ValIsEligible(string sSign, string sMin, string sMax, string sRealVal) { try { switch (sSign) { case ">": return (double.Parse(sMin) < double.Parse(sRealVal)); case ">=": return (double.Parse(sMin) <= double.Parse(sRealVal)); case "=": if (Globals.IsDouble(sMin)) return (double.Parse(sMin) == double.Parse(sRealVal)); else return (sMin == sRealVal); case "<": return (double.Parse(sMax) > double.Parse(sRealVal)); case "<=": return (double.Parse(sMax) >= double.Parse(sRealVal)); default: return true; } } catch { return false; } } #endregion /// /// 数字转换成中文数字 /// /// /// public static string ConvertNumberToChinese(string strNum) { string[] Nums = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; string[] Digits = { "", "拾", "佰", "仟" }; string[] Units = { "元", "万", "亿", "万亿" }; string x, y, z = ""; if (strNum.Length > 2) { x = strNum.Substring(0, strNum.Length - 2); y = strNum.Substring(strNum.Length - 2, 2); } else { x = ""; y = strNum; } if (y.Length == 2) { int n = Convert.ToInt32(y.Substring(0, 1)); z = Nums[n] + "角"; } if (y.Length > 0) { int n = Convert.ToInt32(y.Substring(y.Length - 1, 1)); z += Nums[n] + "分"; } if (y.Length == 0) { if (x.Length == 0) z = "零元整"; else z = "整"; } string S = ""; //返回值 int p = 0; //字符位置指针 int m = x.Length % 4; //取模 // 四位一组得到组数 int k = (m > 0 ? x.Length / 4 + 1 : x.Length / 4); // 外层循环在所有组中循环 // 从左到右 高位到低位 四位一组 逐组处理 // 每组最后加上一个单位: "[万亿]","[亿]","[万]" for (int i = k; i > 0; i--) { int L = 4; if (i == k && m != 0) { L = m; } // 得到一组四位数 最高位组有可能不足四位 string s = x.Substring(p, L); int l = s.Length; // 内层循环在该组中的每一位数上循环 从左到右 高位到低位 for (int j = 0; j < l; j++) { //处理改组中的每一位数加上所在位: "仟","佰","拾",""(个) int n = Convert.ToInt32(s.Substring(j, 1)); if (n == 0) { if (j < l - 1 && Convert.ToInt32(s.Substring(j + 1, 1)) > 0 //后一位(右低) && !S.EndsWith(Nums[n])) { S += Nums[n]; } } else { //处理 1013 一千零"十三", 1113 一千一百"一十三" if (!(n == 1 && (S.EndsWith(Nums[0]) | S.Length == 0) && j == l - 2)) { S += Nums[n]; } S += Digits[l - j - 1]; } } p += L; // 每组最后加上一个单位: [万],[亿] 等 if (i < k) //不是最高位的一组 { if (Convert.ToInt32(s) != 0) { //如果所有 4 位不全是 0 则加上单位 [万],[亿] 等 S += Units[i - 1]; } } else { //处理最高位的一组,最后必须加上单位 S += Units[i - 1]; } } return S + z; } /// /// 时间计算返回分 /// /// /// /// public static int caculateTime(DateTime startTime, DateTime endTime) { int lStayDuration = 0; TimeSpan odtSpan; if (endTime > startTime) { odtSpan = endTime - startTime; lStayDuration = Convert.ToInt32(System.Math.Round(odtSpan.TotalMinutes)); } else if (startTime != endTime) { if (startTime > DateTime.Now) lStayDuration = 0; else { odtSpan = DateTime.Now - startTime; lStayDuration = Convert.ToInt32(System.Math.Round(odtSpan.TotalMinutes)); } } return lStayDuration; } /// /// 时间计算返回秒 /// /// /// /// public static int caculateTimeSeconds(DateTime startTime, DateTime endTime) { int lStayDuration = 0; TimeSpan odtSpan; if (endTime > startTime) { odtSpan = endTime - startTime; lStayDuration = Convert.ToInt32(System.Math.Round(odtSpan.TotalSeconds)); } else if (startTime != endTime) { if (startTime > DateTime.Now) lStayDuration = 0; else { odtSpan = DateTime.Now - startTime; lStayDuration = Convert.ToInt32(System.Math.Round(odtSpan.TotalSeconds)); } } return lStayDuration; } /// /// 获取两个时间段的差值 /// /// /// /// public static int JudgeTime(DateTime startTime, DateTime endTime) { int lStayDuration = 0; TimeSpan odtSpan; if (endTime > startTime) { odtSpan = endTime - startTime; lStayDuration = Convert.ToInt32(System.Math.Round(odtSpan.TotalMinutes)); } return lStayDuration; } /// /// 将ultragrid的数据导出到Excel中 /// /// 要导出数据的ulGrid名称 /// Excel文件名 public static void ulGridToExcel(Infragistics.Win.UltraWinGrid.UltraGrid ulGrid, string sFileName) { try { Infragistics.Win.UltraWinGrid.ExcelExport.UltraGridExcelExporter ulGridExt = new Infragistics.Win.UltraWinGrid.ExcelExport.UltraGridExcelExporter(); ulGridExt.CellExporting += new Infragistics.Win.UltraWinGrid.ExcelExport.CellExportingEventHandler(ultraGridExcelExporter1_CellExporting); System.Windows.Forms.SaveFileDialog saveFileDialog1 = new SaveFileDialog(); if (ulGrid.Rows.Count == 0) { MessageBox.Show("没有数据!", "提示"); return; } saveFileDialog1.FileName = sFileName + DateTime.Now.ToString("yyMMdd") + ".xls"; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { string sFullName = saveFileDialog1.FileName; ulGridExt.Export(ulGrid, sFullName); ProcessStartInfo p = new ProcessStartInfo(sFullName); p.WorkingDirectory = Path.GetDirectoryName(sFullName); Process.Start(p); } } catch (Exception ex) { MessageBox.Show("导出失败,原因:" + ex.Message); } } /// /// 当Grid导出EXCEL时,列字段中的值为编码时,将编码转换成中文 /// /// /// public static void ultraGridExcelExporter1_CellExporting(object sender, Infragistics.Win.UltraWinGrid.ExcelExport.CellExportingEventArgs e) { try { if (e.GridColumn.RowLayoutColumnInfo.LabelPosition == Infragistics.Win.UltraWinGrid.LabelPosition.LabelOnly) { e.Cancel = true; } if (e.GridColumn.EditorControl != null || e.GridColumn.ValueList != null) { e.Value = e.GridRow.GetCellText(e.GridColumn); } } catch { } } /// /// 清除Grid的列过滤 /// /// Grid名称 public static void ClearUlGridFilter(Infragistics.Win.UltraWinGrid.UltraGrid ulGrid) { ulGrid.DisplayLayout.Bands[0].ColumnFilters.ClearAllFilters(); } /// /// 增加Grid的列过滤 /// /// public static void AddUlGridFilter(Infragistics.Win.UltraWinGrid.UltraGrid ulGrid) { ulGrid.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.True; } //查找treeView结点的父结点 public static TreeNode findParentNode(TreeNode preLvlNode, string parentKey) { if (preLvlNode.Name == parentKey) return preLvlNode; foreach (TreeNode node in preLvlNode.Nodes) { if (node.Name.Length <= parentKey.Length) { if (node.Nodes.Count > 0) { TreeNode tNode = findParentNode(node, parentKey); if (tNode != null) return tNode; } else if (node.Name == parentKey) return node; } else return null; } return null; } } }