lg
2024-09-08 65927056612a7ffef20708aefda33d09be51ef6b
DevApp/Gs.DevApp/ToolBox/UtilityHelper.cs
@@ -1,6 +1,5 @@
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
@@ -12,6 +11,10 @@
using Newtonsoft.Json;
using Gs.DevApp.Models;
using System.Windows.Forms;
using static System.Windows.Forms.Control;
using DevExpress.XtraEditors;
using DevExpress.XtraTab;
using System.Text.RegularExpressions;
namespace Gs.DevApp.ToolBox
{
@@ -147,18 +150,254 @@
            rto.rtnData = json["rtnData"];
            return rto;
        }
        /// <summary>
        /// 设置系统字体大小,目前并不通用
        /// 标准json串返回ReturnModel-->table,
        /// </summary>
        public static float GetFontSize = 10;
        public static void SetFont(Control control)
        /// <param name="strReturn"></param>
        /// <returns></returns>
        public static ReturnModel<DataTable> GetNoPageTableByJson(string strReturn)
        {
            float size = GetFontSize;
            foreach (Control childControl in control.Controls)
            ReturnModel<DataTable> rto = new ReturnModel<DataTable>();
            JObject json = JObject.Parse(strReturn);
            rto.rtnCode = int.Parse(json["rtnCode"].ToString());
            rto.rtnMsg = json["rtnMsg"].ToString();
            rto.rtnData = new DataTable();
            JArray array = new JArray();
            var d = json["rtnData"];
            foreach (var a in d)
            {
                childControl.Font = new Font(childControl.Font.FontFamily, size, childControl.Font.Style);
                SetFont(childControl);
                array.Add(a);
            }
            DataTable dt = JsonConvert.DeserializeObject<DataTable>(array.ToString());
            rto.rtnData = dt;
            return rto;
        }
        /// <summary>
        /// 读取默认页大小
        /// </summary>
        /// <returns></returns>
        public static int GetPageSize()
        {
            return 50;
            // return int.Parse(System.Configuration.ConfigurationSettings.AppSettings.Get("PageSize").ToString());
        }
        /// <summary>
        /// 根据对象批量设置文本值
        /// </summary>
        /// <param name="controls">controls:为groupBox1.Controls/panel1.Controls</param>
        /// <param name="dynamicObject">对像</param>
        /// <param name="isEdt">是否可编辑</param>
        public static void SetValueByObj(ControlCollection controls, dynamic dynamicObject, Boolean isEdt)
        {
            foreach (JProperty property in dynamicObject.Properties())
            {
                string strName = property.Name;
                string strVal = property.Value.ToString();
                //    // 如果value是一个对象,可以递归遍历
                //    if (property.Value is JObject)
                //    {
                //        JObject nestedObject = (JObject)property.Value;
                //        foreach (JProperty nestedProperty in nestedObject.Properties())
                //        {
                //            Console.WriteLine("\tName: {0}, Value: {1}", nestedProperty.Name, nestedProperty.Value);
                //        }
                //    }
                Control[] cols = controls.Find("txt_" + strName, true);
                if (cols.Length > 0)
                {
                    Control colType = cols[0];
                    //下拉
                    if (colType is ComboBoxEdit)
                    {
                        ComboBoxEdit txt = colType as ComboBoxEdit;
                        if (txt.Properties.TextEditStyle == DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor)
                            txt.SelectedIndex = int.Parse(strVal);
                        else
                            txt.Text = strVal;
                        txt.Enabled = isEdt;
                        continue;
                    }
                    //文本
                    if (colType is TextEdit)
                    {
                        TextEdit txt = colType as TextEdit;
                        if (txt != null)
                            txt.Text = strVal;
                        txt.Enabled = isEdt;
                        continue;
                    }
                     //数字卡
                    if (colType is NumericUpDown)
                    {
                        NumericUpDown txt = colType as NumericUpDown;
                        if (txt != null)
                            txt.Text = strVal;
                        txt.Enabled = isEdt;
                        continue;
                    }
                }
            }
        }
        /// <summary>
        /// 清空容器里面的控件
        /// </summary>
        /// <param name="controls">controls:为groupBox1.Controls/panel1.Controls</param>
        /// <param name="isEdt">是否可编辑</param>
        public static void CleanValue(ControlCollection controls, Boolean isEdt)
        {
            foreach (Control ctrl in controls)
            {
                ctrl.Enabled = isEdt;
                //多行文本
                if (ctrl is MemoEdit)
                {
                    MemoEdit txt = ctrl as MemoEdit;
                    txt.Text = "";
                    txt.Enabled = isEdt;
                    continue;
                }
                //下拉
                if (ctrl is ComboBoxEdit)
                {
                    ComboBoxEdit txt = ctrl as ComboBoxEdit;
                    if (txt.Properties.TextEditStyle == DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor)
                        txt.SelectedIndex = 0;
                    else
                        txt.Text = "";
                    txt.Enabled = isEdt;
                    continue;
                }
                //文本
                if (ctrl is TextEdit)
                {
                    ctrl.Text = "";
                    continue;
                }
            }
        }
        /// <summary>
        /// 禁用或启用容器里面的控件
        /// </summary>
        /// <param name="controls">controls:为groupBox1.Controls/panel1.Controls</param>
        /// <param name="isEdt">是否可编辑</param>
        public static void ChangeEnable(ControlCollection controls, Boolean isEdt)
        {
            foreach (Control ctrl in controls)
            {
                //文本
                if (ctrl is TextEdit)
                {
                    ctrl.Enabled = isEdt;
                    continue;
                }
                //数字卡
                if (ctrl is NumericUpDown)
                {
                    ctrl.Enabled = isEdt;
                    continue;
                }
            }
        }
        /// <summary>
        ///切换选项卡
        /// </summary>
        /// <param name="tabControl">选项卡容器</param>
        /// <param name="idx">从0开始,如果是999,则全部可用</param>
        public static void ChangeTab(XtraTabControl tabControl, int idx)
        {
            if (idx == 999)
            {
                for (int i = 0; i < tabControl.TabPages.Count; i++)
                {
                    tabControl.TabPages[i].PageEnabled = true;
                }
                tabControl.SelectedTabPageIndex = tabControl.TabPages.Count - 1;
                return;
            }
            for (int i = 0; i < tabControl.TabPages.Count; i++)
            {
                tabControl.TabPages[i].PageEnabled = false;
            }
            tabControl.TabPages[idx].PageEnabled = true;
            tabControl.SelectedTabPageIndex = idx;
        }
        public static void TreeViewCheck(TreeViewEventArgs e)
        {
            try
            {
                if (e.Node.Nodes.Count > 0)
                {
                    bool NoFalse = true;
                    foreach (TreeNode tn in e.Node.Nodes)
                    {
                        if (tn.Checked == false)
                        {
                            NoFalse = false;
                        }
                    }
                    if (e.Node.Checked == true || NoFalse)
                    {
                        foreach (TreeNode tn in e.Node.Nodes)
                        {
                            if (tn.Checked != e.Node.Checked)
                            {
                                tn.Checked = e.Node.Checked;
                            }
                        }
                    }
                }
                if (e.Node.Parent != null && e.Node.Parent is TreeNode)
                {
                    bool ParentNode = true;
                    foreach (TreeNode tn in e.Node.Parent.Nodes)
                    {
                        if (tn.Checked == false)
                        {
                            ParentNode = false;
                        }
                    }
                    if (e.Node.Parent.Checked != ParentNode && (e.Node.Checked == false || e.Node.Checked == true && e.Node.Parent.Checked == false))
                    {
                        e.Node.Parent.Checked = ParentNode;
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// 转驼峰命名
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public static string ToCamelCase(string input)
        {
            if (string.IsNullOrEmpty(input))
                return input;
            // 匹配非字母数字字符后的第一个字母,并将其转换为大写
            return Regex.Replace(
                input,
                "([a-z])([A-Z])",
                "$1$2",
                RegexOptions.CultureInvariant
            ).Trim();
        }
    }
}