feat: 新增主界面模块功能
This commit is contained in:
+61
-18
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user