fix: 收敛旧控件资源与后台线程生命周期

This commit is contained in:
2026-08-11 14:12:18 +08:00
parent f1ce6ff658
commit a9c986f9d5
20 changed files with 1145 additions and 380 deletions
+42 -10
View File
@@ -152,6 +152,34 @@ namespace Lskj.Control
InitializeComponent();
}
/// <summary>
/// Excel 控件包含 SpreadsheetControl、BarManager 和命令注册项,
/// 普通表格模块不应在设计器初始化阶段创建这些重型资源。
/// </summary>
private ExcelControlEx EnsureExcelControl()
{
if (this.excelControlEx1 != null && !this.excelControlEx1.IsDisposed)
{
return this.excelControlEx1;
}
this.excelControlEx1 = new ExcelControlEx
{
AddEnabled = true,
DeleteEnabled = true,
Dock = DockStyle.Fill,
Margin = new Padding(6),
Name = "excelControlEx1",
PrintEnabled = true,
SaveEnabled = true,
TabIndex = 1,
Visible = false
};
this.pl_right.Controls.Add(this.excelControlEx1);
this.ExcelControlObj = this.excelControlEx1;
return this.excelControlEx1;
}
/// <summary>
/// <para>说明:创建界面</para>
/// <para>创建人:龚宇超</para>
@@ -284,20 +312,22 @@ namespace Lskj.Control
}
if (this.IsExcel)
{
//由于创建对象时候要注册,所以动态构造这控件不在设计器进行否则表格模式也会弹出注册
// 只有 Excel 模式才创建 Spreadsheet/Bar 相关资源。
ExcelControlEx excelControl = EnsureExcelControl();
this.ModuleGridDetailObj.Visible = false;
this.repModelDetailEx.Visible = false;
this.excelControlEx1.Visible = true;
excelControl.Visible = true;
excelControl.BringToFront();
if (!Model.DataCaches.GetValue(this, "BasePrimaryKey", out SysModel.ParmaryKey))
{
SysModel.ParmaryKey = BaseImpl.GetBasePrimaryKey(this.Model.ModuleCode);
}
this.excelControlEx1.AddEnabled = this.SysModel.AddEnable;
this.excelControlEx1.DeleteEnabled = this.SysModel.DeleteEnable;
this.excelControlEx1.PrintEnabled = !string.IsNullOrWhiteSpace(this.SysModel.PrintFile);
this.excelControlEx1.SaveEnabled = this.SysModel.ModifyEnable;
this.excelControlEx1.CreateFile();
this.excelControlEx1.SaveCallBack += new EventHandler(OnExcelSaveClick);
excelControl.AddEnabled = this.SysModel.AddEnable;
excelControl.DeleteEnabled = this.SysModel.DeleteEnable;
excelControl.PrintEnabled = !string.IsNullOrWhiteSpace(this.SysModel.PrintFile);
excelControl.SaveEnabled = this.SysModel.ModifyEnable;
excelControl.CreateFile();
excelControl.SaveCallBack += new EventHandler(OnExcelSaveClick);
if (!Model.DataCaches.GetValue(this, "BaseGridColumns", out DataTable dtGridColumns))
{
dtGridColumns = BaseModuleImpl.GetBaseGridColumns(this.Model.ModuleCode);
@@ -314,8 +344,10 @@ namespace Lskj.Control
}
else
{
this.excelControlEx1.Visible = false;
if (this.excelControlEx1 != null)
{
this.excelControlEx1.Visible = false;
}
if (SysModel.isReplacMainDetail == "1")
{
this.ModuleGridDetailObj.Visible = false;