| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 | using PaintDotNet.Instrument;using System;using System.Windows.Forms;namespace PaintDotNet{    class FloatingFormMethod    {        /// <summary>        /// 显示浮动窗口        /// </summary>        /// <param name="form">获取已经弹出的窗口对象</param>        /// <param name="af">没有弹出的窗口对象则创建</param>        /// <param name="workspace">AppWorkspace的引用</param>        public static void ShowFloatForm(Form form, FloatingToolForm af, AppWorkspace workspace,bool isLeft = false)        {                        new FloatingFormMethod(workspace).ShowFloatForm(form, af, isLeft);        }        /// <summary>        /// AppWorkspace的引用        /// </summary>        private AppWorkspace appWorkspace;        private FloatingFormMethod(AppWorkspace workspace)        {            this.appWorkspace = workspace;        }        /// <summary>        /// 显示浮动窗口        /// </summary>        /// <param name="form">获取已经弹出的窗口对象</param>        /// <param name="af">没有弹出的窗口对象则创建</param>        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;            }        }        /// <summary>        /// 浮动窗口消失时保存窗口位置信息        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        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);        }    }}
 |