using PaintDotNet.Instrument; using System; using System.Windows.Forms; namespace PaintDotNet { class FloatingFormMethod { /// /// 显示浮动窗口 /// /// 获取已经弹出的窗口对象 /// 没有弹出的窗口对象则创建 /// AppWorkspace的引用 public static void ShowFloatForm(Form form, FloatingToolForm af, AppWorkspace workspace,bool isLeft = false) { new FloatingFormMethod(workspace).ShowFloatForm(form, af, isLeft); } /// /// AppWorkspace的引用 /// private AppWorkspace appWorkspace; private FloatingFormMethod(AppWorkspace workspace) { this.appWorkspace = workspace; } /// /// 显示浮动窗口 /// /// 获取已经弹出的窗口对象 /// 没有弹出的窗口对象则创建 private void ShowFloatForm(Form form, FloatingToolForm af,bool isLeft = false) { if (form == null || form.IsDisposed) { if (af == null) return; SnapObstacle obstacle = af.SnapObstacle; SnapManager sm = SnapManager.FindMySnapManager(this.appWorkspace); if (sm != null && obstacle.EnableSave) { try { if (isLeft) { sm.ParkObstacle(af, this.appWorkspace, HorizontalSnapEdge.Top, VerticalSnapEdge.Left); } else { sm.LoadSnapObstacleData(SystemLayer.Settings.CurrentUser, obstacle); } } catch (Exception) { sm.ParkObstacle(af, this.appWorkspace, HorizontalSnapEdge.Top, VerticalSnapEdge.Right); } af.FormClosing += Af_FormClosing; } else sm.ParkObstacle(af, this.appWorkspace, HorizontalSnapEdge.Top, VerticalSnapEdge.Right); //af.StartPosition = FormStartPosition.CenterScreen; Form mainForm = appWorkspace.FindForm(); if (mainForm != null) //mainForm.Activate(); af.Show(mainForm/*MainForm.ActiveForm*/); } else { form.Activate(); form.WindowState = FormWindowState.Normal; } } /// /// 浮动窗口消失时保存窗口位置信息 /// /// /// private void Af_FormClosing(object sender, FormClosingEventArgs e) { SnapObstacle obstacle = ((FloatingToolForm)sender).SnapObstacle; SnapManager sm = SnapManager.FindMySnapManager(this.appWorkspace); if (sm != null && obstacle.EnableSave) sm.SaveSnapObstacleData(SystemLayer.Settings.CurrentUser, obstacle); } } }