From 4bb5434385ca4cea8e2001675d6e911e5d989358 Mon Sep 17 00:00:00 2001 From: SugarChes <103551815+SugarChes@users.noreply.github.com> Date: Tue, 1 Sep 2026 16:06:03 +0800 Subject: [PATCH] fix(legacy): remove WPF splitter width workaround --- 插件库/Lskj.PubBill/BillModule.cs | 116 +++--------------------------- 1 file changed, 11 insertions(+), 105 deletions(-) diff --git a/插件库/Lskj.PubBill/BillModule.cs b/插件库/Lskj.PubBill/BillModule.cs index 5a7ab10..2b0cfe2 100644 --- a/插件库/Lskj.PubBill/BillModule.cs +++ b/插件库/Lskj.PubBill/BillModule.cs @@ -91,9 +91,6 @@ namespace Lskj.PubBill private DataTable _detailColumns; private bool IsCopying = false; private bool _moduleResourcesReleased; - private int _preferredSourcePanelWidth; - private bool _sourcePanelWidthRestorePending; - private bool _restoringSourcePanelWidth; protected DataRow BillRowItem; @@ -269,7 +266,6 @@ namespace Lskj.PubBill public BillModule() { InitializeComponent(); - this.ssc_main_top.SizeChanged += OnTopSplitterSizeChanged; } /// @@ -354,7 +350,6 @@ namespace Lskj.PubBill splitContainer.SplitterMoved -= OnDetailsSplitterMoved; splitContainer.SplitterMoved -= OnSpecialMainSplitterMoved; splitContainer.SplitterMoved -= OnSpecialLeftSplitterMoved; - splitContainer.SizeChanged -= OnTopSplitterSizeChanged; } SimpleButton commonButton = control as SimpleButton; @@ -1197,24 +1192,14 @@ namespace Lskj.PubBill // 设置单据来源左侧宽度 if (this.BillModel.PanelWidth == 0) { - this._preferredSourcePanelWidth = 0; - this._sourcePanelWidthRestorePending = false; // 隐藏来源 this.ssc_main_top.PanelVisibility = SplitPanelVisibility.Panel2; } else { string width = IniHelper.Read(string.Format("bill_width_{0}", this.SysModel.ModuleCode)); - int savedWidth; - this._preferredSourcePanelWidth = - !string.IsNullOrEmpty(width) && - int.TryParse(width, out savedWidth) && - savedWidth > 0 - ? savedWidth - : this.BillModel.PanelWidth; - this._sourcePanelWidthRestorePending = - this._preferredSourcePanelWidth > 0; - TryRestoreSourcePanelWidth(); + if (!string.IsNullOrEmpty(width)) + this.ssc_main_top.SplitterPosition = Convert.ToInt32(width); } // 设置单据来源底部高度 @@ -1236,82 +1221,6 @@ namespace Lskj.PubBill } } - - private void OnTopSplitterSizeChanged(object sender, EventArgs e) - { - if (!ReferenceEquals(sender, this.ssc_main_top) || - this._moduleResourcesReleased || - this.BillModel == null || - this.BillModel.PanelWidth <= 0) - { - return; - } - - if (this.ssc_main_top.ClientSize.Width <= 1) - { - if (this._preferredSourcePanelWidth > 0) - { - // WindowsFormsHost temporarily measures a projected page at - // zero while moving it between WPF content presenters. Keep - // the last valid position and restore it after reattachment. - this._sourcePanelWidthRestorePending = true; - } - return; - } - - if (this._isInitFinish && - this._sourcePanelWidthRestorePending && - !this.ssc_main_top.Collapsed) - { - TryRestoreSourcePanelWidth(); - } - } - - private void TryRestoreSourcePanelWidth() - { - if (this._restoringSourcePanelWidth || - this._preferredSourcePanelWidth <= 0 || - this.ssc_main_top == null || - this.ssc_main_top.IsDisposed || - this.ssc_main_top.Collapsed) - { - return; - } - - int availableWidth = this.ssc_main_top.ClientSize.Width; - if (availableWidth <= 1) - { - this._sourcePanelWidthRestorePending = true; - return; - } - - int targetWidth = Math.Min( - this._preferredSourcePanelWidth, - availableWidth - 1); - if (targetWidth <= 0) - { - this._sourcePanelWidthRestorePending = true; - return; - } - - this._restoringSourcePanelWidth = true; - try - { - this.ssc_main_top.SplitterPosition = targetWidth; - this._sourcePanelWidthRestorePending = - targetWidth < this._preferredSourcePanelWidth; - } - catch (ArgumentOutOfRangeException) - { - // The DevExpress panels may not have completed their minimum-size - // layout yet. The next SizeChanged event retries this instance. - this._sourcePanelWidthRestorePending = true; - } - finally - { - this._restoringSourcePanelWidth = false; - } - } /// /// 说明:初始化系统配置 /// 创建人:龚宇超 @@ -4613,6 +4522,14 @@ namespace Lskj.PubBill UpdateDynamicColumns(); UpdateSummaryData(); + // ✅ 新增:开启横向滚动(避免列宽自适应吃掉滚动条) + var gv = gcMain.GridView as DevExpress.XtraGrid.Views.Grid.GridView; + if (gv != null) + { + gv.OptionsView.ColumnAutoWidth = false; + gv.HorzScrollVisibility = DevExpress.XtraGrid.Views.Base.ScrollVisibility.Always; + } + // 你原来的手动刷新——保持 OnGcMainDataSourceChanged(gcMain.GridView, null); } @@ -8463,19 +8380,8 @@ namespace Lskj.PubBill /// The instance containing the event data. private void OnTopSplitterMoved(object sender, EventArgs e) { - if (this._restoringSourcePanelWidth) + if (this._isInitFinish)// 是否为初始化创建 { - return; - } - - if (this._isInitFinish && - this.SysModel != null && - this.ssc_main_top.ClientSize.Width > 1 && - this.ssc_main_top.SplitterPosition > 0)// 是否为初始化创建 - { - this._preferredSourcePanelWidth = - this.ssc_main_top.SplitterPosition; - this._sourcePanelWidthRestorePending = false; IniHelper.Write(string.Format("bill_width_{0}", this.SysModel.ModuleCode), this.ssc_main_top.SplitterPosition + ""); } if (this.gcMain != null && this.gcMain.gridControl != null)