using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Drawing; using System.IO; using System.Net; using System.Net.Http; using System.Reflection; using System.Resources; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows.Forms; using DevExpress.XtraEditors; using DevExpress.XtraEditors.Controls; using DevExpress.XtraGrid; using DevExpress.XtraGrid.Columns; using DevExpress.XtraGrid.Views.Grid; using DevExpress.XtraTab; using DevExpress.XtraTreeList; using Gs.DevApp.Entity; using Gs.DevApp.UserControl; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using static System.Windows.Forms.Control; namespace Gs.DevApp.ToolBox { /// /// 通用类 /// public class UtilityHelper { private static readonly string WebApiUrl = ConfigurationManager.AppSettings["WebApiUrl"]; public static async Task UploadFileAsync(string filePath) { using (var httpClient = new HttpClient()) using (var form = new MultipartFormDataContent()) { httpClient.DefaultRequestHeaders.Add("token", GetBasicAuthTicket()); using (var fs = File.OpenRead(filePath)) using (var streamContent = new StreamContent(fs)) { form.Add(streamContent, "file", Path.GetFileName(filePath)); var response = await httpClient.PostAsync( WebApiUrl + "Upload/UploadFile", form); var responseString = await response.Content.ReadAsStringAsync(); return responseString; } } } /// /// httpPost访问服务 /// /// 服务地址 /// 方法名称 /// 参数 /// public static string HttpPost(string url, string meth, string param) { if (string.IsNullOrEmpty(url)) url = WebApiUrl; url += meth; var request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.ContentType = "application/json"; request.Headers.Add("token", GetBasicAuthTicket()); request.Accept = "*/*"; request.Timeout = 15000; request.AllowAutoRedirect = false; StreamWriter requestStream = null; WebResponse response = null; string responseStr = null; try { requestStream = new StreamWriter(request.GetRequestStream()); requestStream.Write(param); requestStream.Close(); response = request.GetResponse(); if (response != null) { var reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); responseStr = reader.ReadToEnd(); //File.WriteAllText(Server.MapPath("~/") + @"\test.txt", responseStr); reader.Close(); } } catch (Exception ex) { LogHelper.Debug(url, param + ":" + ex.Message); throw ex; } finally { request = null; requestStream = null; response = null; } return responseStr; } /// /// 默认页大小 /// /// public static int GetPageSize() { return int.Parse(ConfigurationSettings.AppSettings.Get("PageSize")); } /// /// 根据图片名读取资源文件,不带后缀名 /// /// /// 1为大图 /// public static Image GetImgFromResource(string imageName, int lay) { var assembly = Assembly.GetExecutingAssembly(); var resourceManager = new ResourceManager("Gs.DevApp.Properties.Resources", assembly); try { var image = resourceManager.GetObject(imageName) as Image; if (image != null) return image; } catch (Exception ex) { } var image2 = resourceManager.GetObject(lay == 1 ? "chartsshowlegend_32x32" : "linktoprevious_16x16") as Image; return image2; } /// /// 初始化一个表 /// /// /// public static void SetDefaultTable(GridControl gc, GridView gv) { var dt = new DataTable(); foreach (GridColumn col in gv.Columns) dt.Columns.Add(col.FieldName, typeof(string)); gc.BindingContext = new BindingContext(); gc.DataSource = dt; gc.ForceInitialize(); } /// /// 生成访问服务的token /// /// public static string GetBasicAuthTicket() { var userGuid = string.IsNullOrEmpty(LoginInfoModel.CurrentUser.LoginUserGuid) ? Guid.NewGuid().ToString() : LoginInfoModel.CurrentUser.LoginUserGuid; var orgGuid = string.IsNullOrEmpty(LoginInfoModel.CurrentUser.LoginOrgGuid) ? Guid.NewGuid().ToString() : LoginInfoModel.CurrentUser.LoginOrgGuid; var token = userGuid + "~" + orgGuid; return token; } /// /// 服务返回的json转为ReturnModel-->包含TablePage分页, /// /// /// public static ReturnModel ReturnToTablePage( string strReturn) { var rto = new ReturnModel(); var json = JObject.Parse(strReturn); rto.rtnCode = int.Parse(json["rtnCode"].ToString()); rto.rtnMsg = json["rtnMsg"].ToString(); rto.rtnData = new PageListModel(); rto.rtnData.pages = int.Parse(json["rtnData"]["pages"].ToString()); rto.rtnData.total = int.Parse(json["rtnData"]["total"].ToString()); rto.rtnData.everyPageSize = int.Parse(json["rtnData"]["everyPageSize"].ToString()); var array = new JArray(); var d = json["rtnData"]["list"]; foreach (var a in d) array.Add(a); var dt = JsonConvert.DeserializeObject(array.ToString()); rto.rtnData.list = dt; return rto; } /// /// 服务返回的json返回ReturnModel, /// /// /// public static ReturnModel ReturnToDynamic(string strReturn) { var rto = new ReturnModel(); var json = JObject.Parse(strReturn); rto.rtnCode = int.Parse(json["rtnCode"].ToString()); rto.rtnMsg = json["rtnMsg"].ToString(); rto.rtnData = json["rtnData"]; return rto; } /// /// 服务返回的json串返回ReturnModel-->仅仅有list,不分页, /// /// /// public static ReturnModel ReturnToList(string strReturn) { var rto = new ReturnModel(); var json = JObject.Parse(strReturn); rto.rtnCode = int.Parse(json["rtnCode"].ToString()); rto.rtnMsg = json["rtnMsg"].ToString(); rto.rtnData = new DataTable(); var array = new JArray(); var d = json["rtnData"]; foreach (var a in d) array.Add(a); var dt = JsonConvert.DeserializeObject(array.ToString()); rto.rtnData = dt; return rto; } /// /// 根据对象批量设置文本框的值 /// /// controls:为groupBox1.Controls/panel1.Controls /// 对像 /// 是否可编辑 /// 关联的grid public static void SetValueByObj(ControlCollection controls, dynamic dynamicObject, bool isEdt, List gridViews = null) { isEdt = !isEdt; if (gridViews != null) foreach (var gv in gridViews) gv.OptionsBehavior.Editable = !isEdt; foreach (JProperty property in dynamicObject.Properties()) { var strName = property.Name; var strVal = property.Value.ToString(); try { var _dddddd = "txt_" + strName; var cols = controls.Find(_dddddd, true); if (cols.Length > 0) { var colType = cols[0]; if (colType is LookUpEdit) { var txt = colType as LookUpEdit; if (txt != null) txt.EditValue = strVal; txt.ReadOnly = isEdt; continue; } if (colType is ImageComboBoxEdit) { var txt = colType as ImageComboBoxEdit; for (var i = 0; i < txt.Properties.Items.Count; i++) { if (txt.Properties.Items[i].Description == strVal) { txt.ReadOnly = isEdt; txt.SelectedIndex = i; } ; } continue; } if (colType is ComboBoxEdit) { var txt = colType as ComboBoxEdit; if (txt.Properties.TextEditStyle == TextEditStyles.DisableTextEditor) txt.SelectedIndex = int.Parse(strVal); else txt.Text = strVal; txt.ReadOnly = isEdt; continue; } //下拉 if (colType is ComboBoxEdit) { var txt = colType as ComboBoxEdit; if (txt.Properties.TextEditStyle == TextEditStyles.DisableTextEditor) txt.SelectedIndex = int.Parse(strVal); else txt.Text = strVal; txt.ReadOnly = isEdt; continue; } //自定义下拉 if (colType is UcComBox) { var txt = colType as UcComBox; txt.Val = strVal; txt.Enabled = !isEdt; continue; } //文本 if (colType is TextEdit) { var txt = colType as TextEdit; if (txt != null) txt.Text = strVal; txt.ReadOnly = isEdt; continue; } //数字卡 if (colType is NumericUpDown) { var txt = colType as NumericUpDown; if (txt != null) txt.Text = strVal; txt.ReadOnly = isEdt; continue; } //单选 if (colType is CheckEdit) { var txt = colType as CheckEdit; if (txt != null) switch (strVal) { case "True": txt.Checked = true; break; case "1": txt.Checked = true; break; case "False": txt.Checked = false; break; default: txt.Checked = false; break; } txt.ReadOnly = isEdt; continue; } //单选 if (colType is CheckBox) { var txt = colType as CheckBox; if (txt != null) txt.Checked = bool.Parse(strVal); txt.Enabled = !isEdt; continue; } //时间 if (colType is DateTimePicker) { var txt = colType as DateTimePicker; txt.Text = strVal; txt.Enabled = !isEdt; continue; } //Label if (colType is Label) { var txt = colType as Label; if (_dddddd == "txt_checkStatus") { if (strVal == "True") txt.Text = "已审核"; if (strVal == "False") txt.Text = "未审核"; } else { txt.Text = strVal; } } } } catch (Exception ex) { MessageBox.Show(ex.Message); } } } /// /// 清空容器里面的控件 /// /// controls:为groupBox1.Controls/panel1.Controls /// 是否可编辑 /// 关联的grid public static void CleanValueByControl(ControlCollection controls, bool isEdt, List gridViews = null) { isEdt = !isEdt; if (gridViews != null) foreach (var gv in gridViews) gv.OptionsBehavior.Editable = !isEdt; foreach (Control ctrl in controls) { //多行文本 if (ctrl is MemoEdit) { var txt = ctrl as MemoEdit; txt.Text = ""; txt.ReadOnly = isEdt; continue; } //下拉 if (ctrl is ComboBoxEdit) { var txt = ctrl as ComboBoxEdit; if (txt.Properties.TextEditStyle == TextEditStyles.DisableTextEditor) txt.SelectedIndex = 0; else txt.Text = ""; txt.ReadOnly = isEdt; continue; } //自定义的下拉 if (ctrl is UcComBox) { var txt = ctrl as UcComBox; txt.Val = "0"; txt.Enabled = !isEdt; continue; } //文本 if (ctrl is TextEdit) { var txt = ctrl as TextEdit; txt.Text = ""; txt.ReadOnly = isEdt; continue; } //时间 if (ctrl is DateTimePicker) { var txt = ctrl as DateTimePicker; txt.Enabled = !isEdt; continue; } //单选 if (ctrl is CheckBox) { var txt = ctrl as CheckBox; txt.Checked = false; txt.Enabled = !isEdt; } } } /// /// 禁用或启用容器里面的控件 /// /// controls:为groupBox1.Controls/panel1.Controls /// /// public static void ChangeEnableByControl(ControlCollection controls, bool isEdt, List gridViews = null) { isEdt = !isEdt; if (gridViews != null) foreach (var gv in gridViews) gv.OptionsBehavior.Editable = !isEdt; foreach (Control ctrl in controls) { //文本 if (ctrl is TextEdit) { var txt = ctrl as TextEdit; txt.ReadOnly = isEdt; continue; } //数字卡 if (ctrl is NumericUpDown) { var txt = ctrl as NumericUpDown; txt.ReadOnly = isEdt; continue; } //下拉 if (ctrl is UcComBox) { var txt = ctrl as UcComBox; txt.Val = "0"; txt.Enabled = !isEdt; continue; } //日期 if (ctrl is DateTimePicker) { ctrl.Enabled = !isEdt; continue; } //单选 if (ctrl is CheckBox) ctrl.Enabled = !isEdt; } } /// /// 切换选项卡 /// /// 选项卡容器 /// 从0开始,如果是999,则全部可用 public static void JumpToTab(XtraTabControl tabControl, int idx) { if (idx == 999) { for (var i = 0; i < tabControl.TabPages.Count; i++) tabControl.TabPages[i].PageEnabled = true; tabControl.SelectedTabPageIndex = tabControl.TabPages.Count - 1; return; } for (var i = 0; i < tabControl.TabPages.Count; i++) tabControl.TabPages[i].PageEnabled = false; tabControl.TabPages[idx].PageEnabled = true; tabControl.SelectedTabPageIndex = idx; } /// /// TreeView联动选择 /// /// public static void TreeViewCheck(TreeViewEventArgs e) { try { if (e.Node.Nodes.Count > 0) foreach (TreeNode tn in e.Node.Nodes) { tn.Checked = e.Node.Checked; foreach (TreeNode x in tn.Nodes) { x.Checked = e.Node.Checked; foreach (TreeNode y in x.Nodes) y.Checked = e.Node.Checked; } } if (e.Node.Checked && e.Node.Parent != null && e.Node.Parent.Nodes.Count > 0) { var currentNode = e.Node; while (currentNode != null) { currentNode.Checked = e.Node.Checked; currentNode = currentNode.Parent; } } } catch (Exception ex) { MsgHelper.ShowError(ex.Message); } } /// /// 转驼峰命名 /// /// /// public static string ToCamelCase(string strItem) { //如果包含小写,但不包含下划线 var hasLowercase = Regex.IsMatch(strItem, @"[a-z]"); if (hasLowercase && !strItem.Contains("_")) { var chars = strItem.ToCharArray(); chars[0] = char.ToLower(chars[0]); return new string(chars); } var strItems = strItem.ToLower().Split('_'); var strItemTarget = strItems[0]; for (var j = 1; j < strItems.Length; j++) { var temp = strItems[j]; var temp1 = temp[0].ToString().ToUpper(); var temp2 = ""; temp2 = temp1 + temp.Remove(0, 1); strItemTarget += temp2; } return strItemTarget; } /// /// 读取grid的当前行 /// /// /// 编辑框中的主键名 /// 编辑框中的文本框名 /// /// /// public static (string, string) GetCurrentRow( XtraTabControl xtraTabControl1 , Label lbGuid , TextEdit txtName , GridView gridView1 , int SelectedTabPageIndex = 1) { var _strGuid = ""; var _strName = ""; if (xtraTabControl1.SelectedTabPageIndex == SelectedTabPageIndex && lbGuid.Text.Length > 10) { _strGuid = lbGuid.Text.Trim(); _strName = txtName.Text.Trim(); } else { var dr = gridView1.GetFocusedDataRow(); if (dr == null || string.IsNullOrEmpty(dr["guid"].ToString())) { } else { _strGuid = dr["guid"].ToString(); _strName = dr[2].ToString(); } } return (_strGuid, _strName); } /// /// 读取TreeView的当前行 /// /// /// /// /// /// /// public static (string, string) GetCurrentRow( XtraTabControl xtraTabControl1 , Label lbGuid , TextEdit txtName , TreeView tlMenu , int SelectedTabPageIndex = 1) { var _strGuid = ""; var _strName = ""; if (xtraTabControl1.SelectedTabPageIndex == SelectedTabPageIndex && lbGuid.Text.Length > 10) { _strGuid = lbGuid.Text.Trim(); _strName = txtName.Text.Trim(); } else { var clickedNode = tlMenu.SelectedNode; if (clickedNode != null) { _strGuid = clickedNode.Name; _strName = clickedNode.Text.Trim(); } } return (_strGuid, _strName); } /// /// 读取TreeList的当前行 /// /// /// /// /// /// /// public static (string, string) GetCurrentRow( XtraTabControl xtraTabControl1 , Label lbGuid , TextEdit txtName , TreeList tlMenu , int SelectedTabPageIndex = 1) { var _strGuid = ""; var _strName = ""; if (xtraTabControl1.SelectedTabPageIndex == SelectedTabPageIndex && lbGuid.Text.Length > 10) { _strGuid = lbGuid.Text.Trim(); _strName = txtName.Text.Trim(); } else { _strGuid = tlMenu.FocusedNode.GetValue("guid").ToString(); _strName = tlMenu.FocusedNode.GetValue(0).ToString(); } return (_strGuid, _strName); } /// /// 读取GridView双击的主键 /// /// /// /// /// public static string GetCurrentDoubleRow(GridView gridView1 , MouseEventArgs e , string colName) { var info = gridView1.CalcHitInfo(e.Location); if (info.InRow) { var view = info.View; if (view != null) { var row = view.GetDataRow(info.RowHandle); if (row != null) { var rowGuid = row[colName].ToString(); return rowGuid; } } } return ""; } /// /// 读取GridView双击的主键 /// /// /// /// /// public static string GetCurrentDoubleRow(TreeList tlMenu , MouseEventArgs e , string colName) { var info = tlMenu.CalcHitInfo(e.Location); if (info.Node != null) { var clickedNode = tlMenu.FocusedNode; if (clickedNode.FirstNode == null) { var rowGuid = clickedNode.GetValue(colName).ToString(); return rowGuid; } } return ""; } } /// /// 下拉框条目类 /// public class CboItemEntity { public CboItemEntity() { } public CboItemEntity(string val, string text) { Text = text; Value = val; } /// /// 显示值 /// public object Text { get; set; } = 0; /// /// 对象值 /// public object Value { get; set; } = ""; public override string ToString() { return Text.ToString(); } } /// /// 查询框 /// public class FilterEntity { /// /// /// 字段名 /// 字段名备注 /// 操作符 /// 操作符备注 /// public FilterEntity(string id, string idDec, string oper, string operDec, string val) { fileId = id; fileIdDec = idDec; fileOper = oper; fileOperDec = operDec; fileValue = val; } public string fileId { get; set; } public string fileIdDec { get; set; } public string fileOper { get; set; } public string fileOperDec { get; set; } public string fileValue { get; set; } } }