feat: 新增主界面模块功能

This commit is contained in:
cyf
2026-08-28 23:32:47 +08:00
parent b33c847b27
commit 98a119ed25
10 changed files with 942 additions and 30 deletions
+61 -18
View File
@@ -42,6 +42,9 @@ namespace Lskj.Main
/// </summary>
public partial class FrmMain : Form
{
// 设计器仍保留旧控件字段;运行时通过配置决定实际使用的主界面。
private dynamic _activeMainPanel;
private dynamic ActiveMainPanel { get { return _activeMainPanel ?? (dynamic)this.mainPanelControlEx; } }
/// <summary>
/// 屏幕dpix、dpiy
/// </summary>
@@ -71,9 +74,48 @@ namespace Lskj.Main
_dpiX = graphics.DpiX;
_dpiY = graphics.DpiY;
InitializeComponent();
InitializeMainPanelVariant();
this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
}
private void InitializeMainPanelVariant()
{
_activeMainPanel = this.mainPanelControlEx;
if (LicenseManager.UsageMode == LicenseUsageMode.Designtime) return;
if (!SystemInfo.Instance.NewMain) return;
System.Windows.Forms.Control oldPanel = this.mainPanelControlEx;
System.Windows.Forms.Control parent = oldPanel.Parent;
if (parent == null) return;
int childIndex = parent.Controls.GetChildIndex(oldPanel);
MainPanelControlEx2 newPanel = null;
try
{
// 先创建新版控件,只有创建成功后才移除旧控件,避免异常时主界面为空。
newPanel = new MainPanelControlEx2
{
Dock = DockStyle.Fill,
Location = Point.Empty,
Name = "mainPanelControlEx2"
};
parent.Controls.Add(newPanel);
parent.Controls.SetChildIndex(newPanel, childIndex);
parent.Controls.Remove(oldPanel);
oldPanel.Dispose();
_activeMainPanel = newPanel;
}
catch (Exception ex)
{
if (newPanel != null)
{
parent.Controls.Remove(newPanel);
newPanel.Dispose();
}
_activeMainPanel = oldPanel;
LogHelper.Instance.WriteError(ex);
}
}
#region
[DllImport("kernel32.dll", EntryPoint = "SetProcessWorkingSetSize")]
public static extern int SetProcessWorkingSetSize(IntPtr process, int minSize, int maxSize);
@@ -116,25 +158,26 @@ namespace Lskj.Main
{
ERPInfo.Instance.MainControl = this;
this.Text = SystemInfo.Instance.ClientName + "ERP系统:" + ERPInfo.Instance.UserName;
this.mainPanelControlEx.Hide();
this.ActiveMainPanel.Hide();
//FrmAutoSqlLoad frm = new FrmAutoSqlLoad();
//frm.ShowDialog();
this.KeyPreview = true;//主窗体允许使用事件
this.mainPanelControlEx.DpiX = _dpiX;
this.mainPanelControlEx.DpiY = _dpiY;
this.mainPanelControlEx.OnLoad();
this.mainPanelControlEx.OnCloseButtonCallBack += new EventHandler(OnCloseButtonCallBack);
this.mainPanelControlEx.OnMaxButtonCallBack += new EventHandler(OnTopPanelMouseDoubleClickCallBack);
this.mainPanelControlEx.OnMinButtonCallBack += new EventHandler(OnMinButtonCallBack);
this.mainPanelControlEx.OnTopMouseDownCallback += new MouseEventHandler(OnTopMouseDownCallback);
this.mainPanelControlEx.OnTopMouseMoveCallBack += new MouseEventHandler(OnTopMouseMoveCallBack);
this.mainPanelControlEx.OnTopMouseUpCallBack += new MouseEventHandler(OnTopMouseUpCallBack);
this.mainPanelControlEx.OnTopPanelMouseDoubleClickCallBack += new EventHandler(OnTopPanelMouseDoubleClickCallBack);
this.ActiveMainPanel.DpiX = _dpiX;
this.ActiveMainPanel.DpiY = _dpiY;
this.ActiveMainPanel.OnLoad();
this.ActiveMainPanel.OnCloseButtonCallBack += new EventHandler(OnCloseButtonCallBack);
this.ActiveMainPanel.OnMaxButtonCallBack += new EventHandler(OnTopPanelMouseDoubleClickCallBack);
this.ActiveMainPanel.OnMinButtonCallBack += new EventHandler(OnMinButtonCallBack);
this.ActiveMainPanel.OnTopMouseDownCallback += new MouseEventHandler(OnTopMouseDownCallback);
this.ActiveMainPanel.OnTopMouseMoveCallBack += new MouseEventHandler(OnTopMouseMoveCallBack);
this.ActiveMainPanel.OnTopMouseUpCallBack += new MouseEventHandler(OnTopMouseUpCallBack);
this.ActiveMainPanel.OnTopPanelMouseDoubleClickCallBack += new EventHandler(OnTopPanelMouseDoubleClickCallBack);
if (SystemInfo.Instance.DetectionMemory)
{
this.TheMemoryTest.Start();
}
this.mainPanelControlEx.State = this.WindowState;
this.ActiveMainPanel.State = this.WindowState;
this.MouseMove += OnFrmMainMouseMove;
this.MouseLeave += OnFrmMainMouseLeave;
@@ -162,7 +205,7 @@ namespace Lskj.Main
}
finally
{
this.mainPanelControlEx.Show();
this.ActiveMainPanel.Show();
}
}
@@ -297,13 +340,13 @@ namespace Lskj.Main
{
foreach (DevExpress.XtraTab.XtraTabPage page in StaticControl.DogVerifyModuleForms)
{
this.mainPanelControlEx.TabMain.Invoke(new Action(() =>
this.ActiveMainPanel.TabMain.Invoke(new Action(() =>
{
try
{
if (this.mainPanelControlEx.TabMain.TabPages.Contains(page))
if (this.ActiveMainPanel.TabMain.TabPages.Contains(page))
{
this.mainPanelControlEx.TabMain.TabPages.Remove(page);
this.ActiveMainPanel.TabMain.TabPages.Remove(page);
page.Dispose();
}
}
@@ -487,7 +530,7 @@ namespace Lskj.Main
{
this.Padding = new Padding(0, 0, 3, 3);
}
this.mainPanelControlEx.State = this.WindowState;
this.ActiveMainPanel.State = this.WindowState;
this.StartPosition = FormStartPosition.CenterScreen;
this.ResetFormState();
}
@@ -621,7 +664,7 @@ namespace Lskj.Main
{
EnsureFormInCurrentScreen();
}
this.mainPanelControlEx.pic_search.Focus();//点击界面失去焦点
this.ActiveMainPanel.pic_search.Focus();//点击界面失去焦点
}
catch (Exception ex)
{