SplitterBase.cs
上传用户:szlfmled
上传日期:2020-11-22
资源大小:978k
文件大小:1k
- using System;
- using System.Collections;
- using System.ComponentModel;
- using System.Drawing;
- using System.Windows.Forms;
- namespace WeifenLuo.WinFormsUI.Docking
- {
- internal class SplitterBase : Control
- {
- public SplitterBase()
- {
- SetStyle(ControlStyles.Selectable, false);
- }
- public override DockStyle Dock
- {
- get { return base.Dock; }
- set
- {
- SuspendLayout();
- base.Dock = value;
- if (Dock == DockStyle.Left || Dock == DockStyle.Right)
- Width = SplitterSize;
- else if (Dock == DockStyle.Top || Dock == DockStyle.Bottom)
- Height = SplitterSize;
- else
- Bounds = Rectangle.Empty;
- if (Dock == DockStyle.Left || Dock == DockStyle.Right)
- Cursor = Cursors.VSplit;
- else if (Dock == DockStyle.Top || Dock == DockStyle.Bottom)
- Cursor = Cursors.HSplit;
- else
- Cursor = Cursors.Default;
-
- ResumeLayout();
- }
- }
- protected virtual int SplitterSize
- {
- get { return 0; }
- }
- protected override void OnMouseDown(MouseEventArgs e)
- {
- base.OnMouseDown(e);
- if (e.Button != MouseButtons.Left)
- return;
- StartDrag();
- }
- protected virtual void StartDrag()
- {
- }
- protected override void WndProc(ref Message m)
- {
- // eat the WM_MOUSEACTIVATE message
- if (m.Msg == (int)Win32.Msgs.WM_MOUSEACTIVATE)
- return;
- base.WndProc(ref m);
- }
- }
- }