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

C#编程

开发平台:

C#

  1. using System;
  2. using System.Collections;
  3. using System.ComponentModel;
  4. using System.Drawing;
  5. using System.Windows.Forms;
  6. namespace WeifenLuo.WinFormsUI.Docking
  7. {
  8. internal class SplitterBase : Control
  9. {
  10. public SplitterBase()
  11. {
  12. SetStyle(ControlStyles.Selectable, false);
  13. }
  14. public override DockStyle Dock
  15. {
  16. get { return base.Dock; }
  17. set
  18. {
  19. SuspendLayout();
  20. base.Dock = value;
  21. if (Dock == DockStyle.Left || Dock == DockStyle.Right)
  22. Width = SplitterSize;
  23. else if (Dock == DockStyle.Top || Dock == DockStyle.Bottom)
  24. Height = SplitterSize;
  25. else
  26. Bounds = Rectangle.Empty;
  27. if (Dock == DockStyle.Left || Dock == DockStyle.Right)
  28. Cursor = Cursors.VSplit;
  29. else if (Dock == DockStyle.Top || Dock == DockStyle.Bottom)
  30. Cursor = Cursors.HSplit;
  31. else
  32. Cursor = Cursors.Default;
  33. ResumeLayout();
  34. }
  35. }
  36. protected virtual int SplitterSize
  37. {
  38. get { return 0; }
  39. }
  40. protected override void OnMouseDown(MouseEventArgs e)
  41. {
  42. base.OnMouseDown(e);
  43. if (e.Button != MouseButtons.Left)
  44. return;
  45. StartDrag();
  46. }
  47. protected virtual void StartDrag()
  48. {
  49. }
  50. protected override void WndProc(ref Message m)
  51. {
  52.             // eat the WM_MOUSEACTIVATE message
  53. if (m.Msg == (int)Win32.Msgs.WM_MOUSEACTIVATE)
  54. return;
  55. base.WndProc(ref m);
  56. }
  57. }
  58. }