lu
2025-02-28 5b419c5a4fd892b1777e8c5ac584bf2df3cbbb3e
DevApp/Gs.DevApp/UserControl/showLayOut.cs
@@ -1,9 +1,16 @@
using DevExpress.XtraGrid.Columns;
using DevExpress.Utils.DirectXPaint;
using DevExpress.XtraEditors;
using DevExpress.XtraEditors.TextEditController;
using DevExpress.XtraGrid.Columns;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraLayout;
using Gs.DevApp.DevFrm.QC.Models;
using Gs.DevApp.ToolBox;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Windows.Forms;
namespace Gs.DevApp.UserControl
@@ -12,24 +19,21 @@
    {
        string formNamespace = "";
        List<GridView> gridViews = new List<GridView>();
        public showLayOut(string _formNamespace, List<GridView> _gridViews)
        List<DevExpress.XtraLayout.LayoutControl> layList = new List<DevExpress.XtraLayout.LayoutControl>();
        List<DevExpress.XtraEditors.SplitContainerControl> spcList = new List<DevExpress.XtraEditors.SplitContainerControl>();
        public showLayOut(string _formNamespace, List<GridView> _gridViews, List<DevExpress.XtraLayout.LayoutControl> _layList, List<DevExpress.XtraEditors.SplitContainerControl> _spcList)
        {
            formNamespace = _formNamespace;
            gridViews = _gridViews;
            layList = _layList;
            spcList = _spcList;
            InitializeComponent();
            this.btnCancel.Click += BtnCancel_Click;
            this.btnSave.Click += BtnSave_Click;
            this.btnHf.Click += BtnHf_Click;
        }
        private void BtnHf_Click(object sender, EventArgs e)
        {
            _setLyout(0);
        }
        private void BtnSave_Click(object sender, EventArgs e)
        {
            _setLyout(1);
            _setLyout();
        }
        private void BtnCancel_Click(object sender, EventArgs e)
@@ -37,57 +41,76 @@
            Close();
        }
        private void _setLyout(int type)
        private void _setLyout()
        {
            //  --col1,100,101,102,103,104,105,1,title&col2,100,101,102,103,104,105,1,title
            if (txt_layOut.SelectedIndex <= 0)
            {
                MsgHelper.Warning("请选择适用范围!");
                return;
            }
            GridView gridView1 = gridViews[0];
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            foreach (GridColumn column in gridView1.Columns)
            List<dynamic> xmlList = new List<dynamic>();
            foreach (GridView gridView1 in gridViews)
            {
                string controlId = column.Name;
                int controlPosX = 0;
                int controlPosY = 0;
                int controlWidth = 0;
                int controlMinWidth = column.MinWidth;
                int controlMaxWidth = column.MaxWidth;
                int controlHeight = 0;
                int controlVisible = column.Visible == true ? 1 : 0;
                string controlTitle = string.IsNullOrEmpty(column.Caption.Trim()) ? "未定义" : column.Caption.Trim();
                int controlIdx = column.VisibleIndex;
                if (sb.Length > 0)
                    sb.Append("&");
                sb.Append(controlId);
                sb.Append(",");
                sb.Append(controlPosX);
                sb.Append(",");
                sb.Append(controlPosY);
                sb.Append(",");
                sb.Append(controlWidth);
                sb.Append(",");
                sb.Append(controlMinWidth);
                sb.Append(",");
                sb.Append(controlMaxWidth);
                sb.Append(",");
                sb.Append(controlHeight);
                sb.Append(",");
                sb.Append(controlVisible);
                sb.Append(",");
                sb.Append(controlTitle);
                sb.Append(",");
                sb.Append(controlIdx);
                System.IO.Stream stream = new System.IO.MemoryStream();
                gridView1.SaveLayoutToStream(stream);
                stream.Seek(0, System.IO.SeekOrigin.Begin);
                StringBuilder sb = new StringBuilder();
                using (StreamReader reader = new StreamReader(stream))
                {
                    char[] buffer = new char[4096]; // 缓冲区大小根据需要调整
                    int numCharsRead;
                    while ((numCharsRead = reader.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        sb.Append(buffer, 0, numCharsRead);
                    }
                }
                xmlList.Add(
                       new { idType = "gridview", idName = gridView1.Name, idXml = sb.ToString(), splitterPosition="" }
                 );
            }
            foreach (LayoutControl lay1 in layList)
            {
                System.IO.Stream stream = new System.IO.MemoryStream();
                lay1.SaveLayoutToStream(stream);
                stream.Seek(0, System.IO.SeekOrigin.Begin);
                StringBuilder sb = new StringBuilder();
                using (StreamReader reader = new StreamReader(stream))
                {
                    char[] buffer = new char[4096]; // 缓冲区大小根据需要调整
                    int numCharsRead;
                    while ((numCharsRead = reader.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        sb.Append(buffer, 0, numCharsRead);
                    }
                }
                xmlList.Add(
                       new { idType = "layoutcontrol ", idName = lay1.Name, idXml = sb.ToString(), splitterPosition="" }
                 );
            }
            foreach (SplitContainerControl splt in spcList)
            {
                System.IO.Stream stream = new System.IO.MemoryStream();
                splt.SaveLayoutToStream(stream);
                stream.Seek(0, System.IO.SeekOrigin.Begin);
                StringBuilder sb = new StringBuilder();
                using (StreamReader reader = new StreamReader(stream))
                {
                    char[] buffer = new char[4096]; // 缓冲区大小根据需要调整
                    int numCharsRead;
                    while ((numCharsRead = reader.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        sb.Append(buffer, 0, numCharsRead);
                    }
                }
                xmlList.Add(
                       new { idType = "splitcontainercontrol ", idName = splt.Name, idXml = sb.ToString(), splitterPosition= splt.SplitterPosition }
                 );
            }
            var _obj = new
            {
                applyUserGuid = txt_layOut.SelectedIndex,
                layoutLst = sb.ToString(),
                xmlList = xmlList,
                formPath = formNamespace,
                intType= type
                intType = txt_layOut.SelectedIndex,
            };
            try
            {