FloatingFormMethod.cs 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Windows.Forms;
  7. namespace SmartCoalApplication
  8. {
  9. class FloatingFormMethod
  10. {
  11. /// <summary>
  12. /// 显示浮动窗口
  13. /// </summary>
  14. /// <param name="form">获取已经弹出的窗口对象</param>
  15. /// <param name="af">没有弹出的窗口对象则创建</param>
  16. /// <param name="workspace">AppWorkspace的引用</param>
  17. public static void ShowFloatForm(Form form, FloatingToolForm af, AppWorkspace workspace, bool isLeft = false)
  18. {
  19. new FloatingFormMethod(workspace).ShowFloatForm(form, af, isLeft);
  20. }
  21. /// <summary>
  22. /// 显示浮动窗口
  23. /// </summary>
  24. /// <param name="form">获取已经弹出的窗口对象</param>
  25. /// <param name="af">没有弹出的窗口对象则创建</param>
  26. /// <param name="workspace">AppWorkspace的引用</param>
  27. public static void ShowResultFloatForm(Form form, FloatingToolForm af, AppWorkspace workspace)
  28. {
  29. new FloatingFormMethod(workspace).ShowResultFloatForm(form, af);
  30. }
  31. /// <summary>
  32. /// AppWorkspace的引用
  33. /// </summary>
  34. private AppWorkspace appWorkspace;
  35. private FloatingFormMethod(AppWorkspace workspace)
  36. {
  37. this.appWorkspace = workspace;
  38. }
  39. /// <summary>
  40. /// 显示浮动窗口
  41. /// </summary>
  42. /// <param name="form">获取已经弹出的窗口对象</param>
  43. /// <param name="af">没有弹出的窗口对象则创建</param>
  44. private void ShowResultFloatForm(Form form, FloatingToolForm af)
  45. {
  46. if (form == null || form.IsDisposed)
  47. {
  48. if (af == null)
  49. return;
  50. SnapObstacle obstacle = af.SnapObstacle;
  51. SnapManager sm = SnapManager.FindMySnapManager(this.appWorkspace);
  52. if (sm != null)
  53. {
  54. if (obstacle.EnableSave)
  55. {
  56. try
  57. {
  58. sm.LoadSnapObstacleData(SystemLayer.Settings.CurrentUser, obstacle);
  59. }
  60. catch (Exception)
  61. {
  62. sm.ParkObstacle(af, this.appWorkspace, HorizontalSnapEdge.Top, VerticalSnapEdge.Right);
  63. }
  64. af.FormClosing += Af_FormClosing;
  65. }
  66. else
  67. sm.ParkObstacle(af, this.appWorkspace, HorizontalSnapEdge.Top, VerticalSnapEdge.Right);
  68. }
  69. //af.StartPosition = FormStartPosition.CenterScreen;
  70. Form mainForm = appWorkspace.FindForm();
  71. if (mainForm != null)
  72. //mainForm.Activate();
  73. af.Show(mainForm/*MainForm.ActiveForm*/);
  74. //af.Activate();
  75. //af.WindowState = FormWindowState.Normal;
  76. }
  77. else
  78. {
  79. if (af == null)
  80. return;
  81. SnapObstacle obstacle = af.SnapObstacle;
  82. SnapManager sm = SnapManager.FindMySnapManager(this.appWorkspace);
  83. if (sm != null)
  84. {
  85. if (obstacle.EnableSave)
  86. {
  87. try
  88. {
  89. sm.LoadSnapObstacleData(SystemLayer.Settings.CurrentUser, obstacle);
  90. }
  91. catch (Exception)
  92. {
  93. sm.ParkObstacle(af, this.appWorkspace, HorizontalSnapEdge.Top, VerticalSnapEdge.Right);
  94. }
  95. af.FormClosing += Af_FormClosing;
  96. }
  97. else
  98. sm.ParkObstacle(af, this.appWorkspace, HorizontalSnapEdge.Top, VerticalSnapEdge.Right);
  99. }
  100. form.Activate();
  101. af.Show(form);
  102. }
  103. }
  104. /// <summary>
  105. /// 显示浮动窗口
  106. /// </summary>
  107. /// <param name="form">获取已经弹出的窗口对象</param>
  108. /// <param name="af">没有弹出的窗口对象则创建</param>
  109. private void ShowFloatForm(Form form, FloatingToolForm af, bool isLeft = false)
  110. {
  111. if (form == null || form.IsDisposed)
  112. {
  113. if (af == null)
  114. return;
  115. SnapObstacle obstacle = af.SnapObstacle;
  116. SnapManager sm = SnapManager.FindMySnapManager(this.appWorkspace);
  117. if (sm != null)
  118. {
  119. if (obstacle.EnableSave)
  120. {
  121. try
  122. {
  123. if (isLeft)
  124. {
  125. sm.ParkObstacle(af, this.appWorkspace, HorizontalSnapEdge.Top, VerticalSnapEdge.Left);
  126. }
  127. else
  128. {
  129. sm.LoadSnapObstacleData(SystemLayer.Settings.CurrentUser, obstacle);
  130. }
  131. }
  132. catch (Exception)
  133. {
  134. sm.ParkObstacle(af, this.appWorkspace, HorizontalSnapEdge.Top, VerticalSnapEdge.Right);
  135. }
  136. af.FormClosing += Af_FormClosing;
  137. }
  138. else
  139. sm.ParkObstacle(af, this.appWorkspace, HorizontalSnapEdge.Top, VerticalSnapEdge.Right);
  140. }
  141. //af.StartPosition = FormStartPosition.CenterScreen;
  142. Form mainForm = appWorkspace.FindForm();
  143. if (mainForm != null)
  144. //mainForm.Activate();
  145. af.Show(mainForm/*MainForm.ActiveForm*/);
  146. //af.Activate();
  147. //af.WindowState = FormWindowState.Normal;
  148. }
  149. else
  150. {
  151. form.Activate();
  152. form.WindowState = FormWindowState.Normal;
  153. }
  154. }
  155. /// <summary>
  156. /// 浮动窗口消失时保存窗口位置信息
  157. /// </summary>
  158. /// <param name="sender"></param>
  159. /// <param name="e"></param>
  160. private void Af_FormClosing(object sender, FormClosingEventArgs e)
  161. {
  162. SnapObstacle obstacle = ((FloatingToolForm)sender).SnapObstacle;
  163. SnapManager sm = SnapManager.FindMySnapManager(this.appWorkspace);
  164. if (sm != null && obstacle.EnableSave)
  165. sm.SaveSnapObstacleData(SystemLayer.Settings.CurrentUser, obstacle);
  166. }
  167. }
  168. }