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 { public partial class showLayOut : DevExpress.XtraEditors.XtraForm { string formNamespace = ""; List gridViews = new List(); List layList = new List(); List spcList = new List(); public showLayOut(string _formNamespace, List _gridViews, List _layList, List _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) { _setLyout(); } private void BtnCancel_Click(object sender, EventArgs e) { Close(); } private void _setLyout() { if (txt_layOut.SelectedIndex <= 0) { MsgHelper.Warning("请选择适用范围!"); return; } List xmlList = new List(); foreach (GridView gridView1 in gridViews) { 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 { xmlList = xmlList, formPath = formNamespace, intType = txt_layOut.SelectedIndex, }; try { var strJson = UtilityHelper.HttpPost("", "Fm/EditModel", JsonConvert.SerializeObject(_obj)); var _rtn = UtilityHelper.ReturnToDynamic(strJson); MsgHelper.Warning("提示:" + _rtn.rtnData.outMsg); if (_rtn.rtnCode > 0) { DialogResult = DialogResult.OK; Close(); } else { DialogResult = DialogResult.None; } } catch (Exception ex) { DialogResult = DialogResult.Cancel; MsgHelper.Warning("提示:" + ex.Message); } } } }