DockHelper.cs
上传用户:szlfmled
上传日期:2020-11-22
资源大小:978k
文件大小:3k
源码类别:

C#编程

开发平台:

C#

  1. using System;
  2. using System.Drawing;
  3. using System.Windows.Forms;
  4. namespace WeifenLuo.WinFormsUI.Docking
  5. {
  6. internal static class DockHelper
  7. {
  8. public static bool IsDockStateAutoHide(DockState dockState)
  9. {
  10. if (dockState == DockState.DockLeftAutoHide ||
  11. dockState == DockState.DockRightAutoHide ||
  12. dockState == DockState.DockTopAutoHide ||
  13. dockState == DockState.DockBottomAutoHide)
  14. return true;
  15. else
  16. return false;
  17. }
  18. public static bool IsDockStateValid(DockState dockState, DockAreas dockableAreas)
  19. {
  20. if (((dockableAreas & DockAreas.Float) == 0) &&
  21. (dockState == DockState.Float))
  22. return false;
  23. else if (((dockableAreas & DockAreas.Document) == 0) &&
  24. (dockState == DockState.Document))
  25. return false;
  26. else if (((dockableAreas & DockAreas.DockLeft) == 0) &&
  27. (dockState == DockState.DockLeft || dockState == DockState.DockLeftAutoHide))
  28. return false;
  29. else if (((dockableAreas & DockAreas.DockRight) == 0) &&
  30. (dockState == DockState.DockRight || dockState == DockState.DockRightAutoHide))
  31. return false;
  32. else if (((dockableAreas & DockAreas.DockTop) == 0) &&
  33. (dockState == DockState.DockTop || dockState == DockState.DockTopAutoHide))
  34. return false;
  35. else if (((dockableAreas & DockAreas.DockBottom) == 0) &&
  36. (dockState == DockState.DockBottom || dockState == DockState.DockBottomAutoHide))
  37. return false;
  38. else
  39. return true;
  40. }
  41. public static bool IsDockWindowState(DockState state)
  42. {
  43. if (state == DockState.DockTop || state == DockState.DockBottom || state == DockState.DockLeft ||
  44. state == DockState.DockRight || state == DockState.Document)
  45. return true;
  46. else
  47. return false;
  48. }
  49. public static DockState ToggleAutoHideState(DockState state)
  50. {
  51. if (state == DockState.DockLeft)
  52. return DockState.DockLeftAutoHide;
  53. else if (state == DockState.DockRight)
  54. return DockState.DockRightAutoHide;
  55. else if (state == DockState.DockTop)
  56. return DockState.DockTopAutoHide;
  57. else if (state == DockState.DockBottom)
  58. return DockState.DockBottomAutoHide;
  59. else if (state == DockState.DockLeftAutoHide)
  60. return DockState.DockLeft;
  61. else if (state == DockState.DockRightAutoHide)
  62. return DockState.DockRight;
  63. else if (state == DockState.DockTopAutoHide)
  64. return DockState.DockTop;
  65. else if (state == DockState.DockBottomAutoHide)
  66. return DockState.DockBottom;
  67. else
  68. return state;
  69. }
  70. public static DockPane PaneAtPoint(Point pt, DockPanel dockPanel)
  71. {
  72. for (Control control = Win32Helper.ControlAtPoint(pt); control != null; control = control.Parent)
  73. {
  74. IDockContent content = control as IDockContent;
  75. if (content != null && content.DockHandler.DockPanel == dockPanel)
  76. return content.DockHandler.Pane;
  77. DockPane pane = control as DockPane;
  78. if (pane != null && pane.DockPanel == dockPanel)
  79. return pane;
  80. }
  81. return null;
  82. }
  83. public static FloatWindow FloatWindowAtPoint(Point pt, DockPanel dockPanel)
  84. {
  85. for (Control control = Win32Helper.ControlAtPoint(pt); control != null; control = control.Parent)
  86. {
  87. FloatWindow floatWindow = control as FloatWindow;
  88. if (floatWindow != null && floatWindow.DockPanel == dockPanel)
  89. return floatWindow;
  90. }
  91. return null;
  92. }
  93. }
  94. }