lu
2025-03-07 8850ceb368deb9a1445ae8b7f5f7d0346bc700a2
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,64 +19,98 @@
    {
        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;
        }
        private void BtnSave_Click(object sender, EventArgs e)
        {
            //  --col1,100,101,102,103,104,105,1,title&col2,100,101,102,103,104,105,1,title
            _setLyout();
        }
        private void BtnCancel_Click(object sender, EventArgs e)
        {
            Close();
        }
        private void _setLyout()
        {
            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(),
                formPath = formNamespace
                xmlList = xmlList,
                formPath = formNamespace,
                intType = txt_layOut.SelectedIndex,
            };
            try
            {
@@ -92,11 +133,6 @@
                DialogResult = DialogResult.Cancel;
                MsgHelper.Warning("提示:" + ex.Message);
            }
        }
        private void BtnCancel_Click(object sender, EventArgs e)
        {
            Close();
        }
    }
}