FloatingFormMethod.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. using PaintDotNet.Instrument;
  2. using System;
  3. using System.Windows.Forms;
  4. namespace PaintDotNet
  5. {
  6. class FloatingFormMethod
  7. {
  8. /// <summary>
  9. /// 显示浮动窗口
  10. /// </summary>
  11. /// <param name="form">获取已经弹出的窗口对象</param>
  12. /// <param name="af">没有弹出的窗口对象则创建</param>
  13. /// <param name="workspace">AppWorkspace的引用</param>
  14. public static void ShowFloatForm(Form form, FloatingToolForm af, AppWorkspace workspace,bool isLeft = false)
  15. {
  16. new FloatingFormMethod(workspace).ShowFloatForm(form, af, isLeft);
  17. }
  18. /// <summary>
  19. /// AppWorkspace的引用
  20. /// </summary>
  21. private AppWorkspace appWorkspace;
  22. private FloatingFormMethod(AppWorkspace workspace)
  23. {
  24. this.appWorkspace = workspace;
  25. }
  26. /// <summary>
  27. /// 显示浮动窗口
  28. /// </summary>
  29. /// <param name="form">获取已经弹出的窗口对象</param>
  30. /// <param name="af">没有弹出的窗口对象则创建</param>
  31. private void ShowFloatForm(Form form, FloatingToolForm af,bool isLeft = false)
  32. {
  33. if (form == null || form.IsDisposed)
  34. {
  35. if (af == null)
  36. return;
  37. SnapObstacle obstacle = af.SnapObstacle;
  38. SnapManager sm = SnapManager.FindMySnapManager(this.appWorkspace);
  39. if (sm != null && obstacle.EnableSave)
  40. {
  41. try
  42. {
  43. if (isLeft)
  44. {
  45. sm.ParkObstacle(af, this.appWorkspace, HorizontalSnapEdge.Top, VerticalSnapEdge.Left);
  46. }
  47. else
  48. {
  49. sm.LoadSnapObstacleData(SystemLayer.Settings.CurrentUser, obstacle);
  50. }
  51. }
  52. catch (Exception)
  53. {
  54. sm.ParkObstacle(af, this.appWorkspace, HorizontalSnapEdge.Top, VerticalSnapEdge.Right);
  55. }
  56. af.FormClosing += Af_FormClosing;
  57. }
  58. else
  59. sm.ParkObstacle(af, this.appWorkspace, HorizontalSnapEdge.Top, VerticalSnapEdge.Right);
  60. //af.StartPosition = FormStartPosition.CenterScreen;
  61. Form mainForm = appWorkspace.FindForm();
  62. if (mainForm != null)
  63. //mainForm.Activate();
  64. af.Show(mainForm/*MainForm.ActiveForm*/);
  65. }
  66. else
  67. {
  68. form.Activate();
  69. form.WindowState = FormWindowState.Normal;
  70. }
  71. }
  72. /// <summary>
  73. /// 浮动窗口消失时保存窗口位置信息
  74. /// </summary>
  75. /// <param name="sender"></param>
  76. /// <param name="e"></param>
  77. private void Af_FormClosing(object sender, FormClosingEventArgs e)
  78. {
  79. SnapObstacle obstacle = ((FloatingToolForm)sender).SnapObstacle;
  80. SnapManager sm = SnapManager.FindMySnapManager(this.appWorkspace);
  81. if (sm != null && obstacle.EnableSave)
  82. sm.SaveSnapObstacleData(SystemLayer.Settings.CurrentUser, obstacle);
  83. }
  84. }
  85. }