using System;
using System.Data;
using System.Collections;
using System.Windows.Forms;
using System.Text.RegularExpressions;
using System.Reflection;
using System.Diagnostics;
using System.IO;
using CoreFS.CA06;
namespace Core.Mes.Client.Common
{
public class Globals
{
///
/// 初始化Combox数据
///
/// ComboBox控件
/// DataSet数据源
public static void FillComboxItems(ComboBox cmbx, DataSet dset)
{
if (dset.Tables.Count > 0 && dset.Tables[0].Columns.Count > 1)
{
ArrayList aryTmp = new ArrayList();
for (int i = 0; i < dset.Tables[0].Rows.Count; i++)
{
aryTmp.Add(new ValueListItem(dset.Tables[0].Rows[i][0].ToString(), dset.Tables[0].Rows[i][1].ToString()));
}
cmbx.DataSource = aryTmp;
cmbx.DisplayMember = "Name";
cmbx.ValueMember = "ID";
}
}
///
/// 初始化Combox数据,加入数据筛选
///
/// ComboBox控件
/// DataSet数据源
/// RowFilter条件
public static void FillComboxItems(ComboBox cmbx, DataSet dset, string filterCondition)
{
if (dset.Tables.Count > 0 && dset.Tables[0].Columns.Count > 1)
{
DataView dvw = dset.Tables[0].DefaultView;
dvw.RowFilter = filterCondition;
ArrayList aryTmp = new ArrayList();
for (int i = 0; i < dvw.Count; i++)
{
aryTmp.Add(new ValueListItem(dvw[i][0].ToString(), dvw[i][1].ToString()));
}
cmbx.DataSource = aryTmp;
cmbx.DisplayMember = "Name";
cmbx.ValueMember = "ID";
}
}
///
/// 初始化UltraCombo数据
///
/// ultraComboEditor控件
/// DataSet数据源
public static void FillUltraComboItems(Infragistics.Win.UltraWinEditors.UltraComboEditor ulcme, DataSet dset)
{
if (dset.Tables.Count > 0 && dset.Tables[0].Columns.Count > 1)
{
for (int i = 0; i < dset.Tables[0].Rows.Count; i++)
ulcme.Items.Add(dset.Tables[0].Rows[i][0].ToString(), dset.Tables[0].Rows[i][1].ToString());
}
}
///
/// 初始化UltraComboEditor数据
///
///
///
public static void FillUlcmeItems(Infragistics.Win.UltraWinEditors.UltraComboEditor ulcme, DataTable dt)
{
if (dt.Columns.Count > 0)
{
ulcme.Items.Clear();
for (int i = 0; i < dt.Rows.Count; i++)
ulcme.Items.Add(dt.Rows[i][0].ToString());
}
}
///
/// 初始化UltraCombo数据,加入数据筛选
///
/// ultraComboEditor控件
/// DataSet数据源
/// RowFilter条件
public static void FillUltraComboItems(Infragistics.Win.UltraWinEditors.UltraComboEditor ulcme, DataSet dset, string filterCondition)
{
if (dset.Tables.Count > 0 && dset.Tables[0].Columns.Count > 1)
{
DataView dvw = dset.Tables[0].DefaultView;
dvw.RowFilter = filterCondition;
for (int i = 0; i < dvw.Count; i++)
ulcme.Items.Add(dvw[i][0].ToString(), dvw[i][1].ToString());
}
}
///
/// 初始化UltraCombo数据
///
///
/// DataTable
public static void FillUltraComboItems(Infragistics.Win.UltraWinEditors.UltraComboEditor ulcme, DataTable dt)
{
if (dt.Columns.Count > 1)
{
for (int i = 0; i < dt.Rows.Count; i++)
ulcme.Items.Add(dt.Rows[i][0].ToString(), dt.Rows[i][1].ToString());
}
}
///
/// 初始化UltraCombo数据
///
///
/// DataView
public static void FillUltraComboItems(Infragistics.Win.UltraWinEditors.UltraComboEditor ulcme, DataView dv)
{
if (dv.Count > 0)
{
for (int i = 0; i < dv.Count; i++)
ulcme.Items.Add(dv[i]["BASECODE"].ToString(), dv[i]["BASENAME"].ToString());
}
}
///
/// 初始化UltraCombo数据,并添加“空”
///
/// ultraComboEditor控件
/// DataSet数据源
public static void FillUlcmItemsAddEmpty(Infragistics.Win.UltraWinEditors.UltraComboEditor ulcme, DataSet dset)
{
ulcme.Items.Add("", "空");
FillUltraComboItems(ulcme, dset);
}
///
/// 初始化UltraCombo数据,并添加“空”;加入数据筛选
///
/// ultraComboEditor控件
/// DataSet数据源
/// RowFilter条件
public static void FillUlcmItemsAddEmpty(Infragistics.Win.UltraWinEditors.UltraComboEditor ulcme, DataSet dset, string filterCondition)
{
ulcme.Items.Add("", "空");
FillUltraComboItems(ulcme, dset, filterCondition);
}
///
/// 字符串转是否能转换成非负数
///
///
///
public static bool Is_Below_zero(string str)
{
try
{
if (IsDouble(str) && double.Parse(str) > 0)
return true;
else
return false;
}
catch
{
return false;
}
}
///
/// 删除记录激活指定行
///
/// ultraGrid
/// 删除行的索引
public static void GridAfterDelRow_ReSelectRow(ref Infragistics.Win.UltraWinGrid.UltraGrid grid, int delRowIndex)
{
if (grid.Rows.Count == 0) return;
if ((delRowIndex + 1) > grid.Rows.Count)
{
grid.Rows[delRowIndex - 1].Activate();
grid.Rows[delRowIndex - 1].Selected = true;
}
else
{
grid.Rows[delRowIndex].Activate();
grid.Rows[delRowIndex].Selected = true;
}
}
///
/// 全单位修约(GB 8170-87)
///
/// 原始值
/// 10的n次方修约间隔
/// 修约后值
public static string XYFullUnit(string sOriVal, sbyte ten_interval)
{
try
{
decimal interval = Convert.ToDecimal(Math.Pow(10, ten_interval));//修约间隔
decimal d = decimal.Parse(sOriVal) / interval;
bool isPlus = (d > 0); //是否为正数
d = Math.Abs(d);
int i = (int)d;
if ((d - i) < 0.5m)
{
d = i * interval;
}
else if ((d - i) > 0.5m)
{
d = (i + 1) * interval;
}
else //(d-i) == 0.5m
{
if ((i % 2) == 0) //双数舍去
d = i * interval;
else //单数进一
d = (i + 1) * interval;
}
if (!isPlus)
d = 0 - d;
if (ten_interval >= 0)
return d.ToString();
else
return ValWithDigits(d.ToString(), Math.Abs(ten_interval));
}
catch
{
return "";
}
}
///
/// 保留指定位数小数
///
///
///
///
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);
}
#region "数据验证"
///
/// 验证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-u9fa5");
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;
}
///
/// 打开其他工程中的窗体
///
/// 主窗体 (this.MdiParent)
/// 一般为窗体的全称 + 配置信息(可无)
/// 程序集名
/// 窗体的全称
/// 窗体的中文名
public static void OpenOtherAssemblyForm(Form vParentFrm, string vKey, string vAssemblyName,
string vClassName, string vCaption)
{
//检查窗体是否已经打开
foreach (Form mdiChild in vParentFrm.MdiChildren)
{
if ((mdiChild as FrmBase).Key == vKey)
{
mdiChild.Activate();
return;
}
}
//实例化窗体并打开
try
{
Assembly baseFormAssembly = Assembly.Load(vAssemblyName);
Type type = baseFormAssembly.GetType(vClassName);
System.Diagnostics.Debug.Assert(type.IsSubclassOf(typeof(FrmBase)));
FrmBase form = Activator.CreateInstance(type, true) as FrmBase;
form.MdiParent = vParentFrm;
form.Text = vCaption;
form.Key = vKey;
form.Show();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
/////
///// 获取当前班次
/////
/////
//public static string GetCurrentClass(RemotingHelp RemotingHelp)
//{
// string szOut = "";
// CallingMessage par = new CallingMessage();
// par.ServerName = "lgJobMgt";
// par.AssemblyName = "Core.LgMes.Server.lgJobMgt";
// par.ClassName = "Core.LgMes.Server.lgJobMgt.classCommonModule";
// par.MethodName = "GetCurrDuty";
// par.args = null;
// object obj = ClientCommon._RemotingHelp.ExecuteMethod(par, out szOut);
// if (szOut == "" && obj != null)
// {
// return obj as string;
// }
// return "";
//}
///
/// 班次转换
///
///
public static string ClassConvert(string szClassID)
{
if (szClassID.Trim() == "")
return "";
if (szClassID.Length == 2)
szClassID = szClassID.Substring(1);
string szClassName = "";
switch (szClassID)
{
case "1":
szClassName = "甲";
break;
case "2":
szClassName = "乙";
break;
case "3":
szClassName = "丙";
break;
case "4":
szClassName = "丁";
break;
default:
break;
}
return szClassName;
}
///
/// 时间计算返回分
///
///
///
///
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");
saveFileDialog1.Filter = "Excel文件(*.xls)|*.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;
}
}
public class ValueListItem
{
string _id = "";
string _name = "";
public string ID
{
get { return _id; }
set { _id = value; }
}
public string Name
{
get { return _name; }
set { _name = value; }
}
public ValueListItem(string sID, string sName)
{
_id = sID;
_name = sName;
}
public override string ToString()
{
return _name;
}
}
}