最近做东西需要用到这个,网上找了一下有不少人实现了,比如这位兄弟
http://blog.youkuaiyun.com/mngzilin/article/details/5549119
但是有个问题,子窗体无法脱离父窗体独立运动,所以自己重写了一个,初步试了一下,效果挺不错的
可以改进,加入吸附桌面边缘等功能
using System;
using System.Drawing;
using System.Collections.Generic;
using System.Windows.Forms;
namespace TinyBook
{
public enum MagneticLocation
{
Left = 0,
Right = 1,
Top = 2,
Bottom = 3
}
public enum MagneticState
{
Adsorbent, // 吸附
Separation // 分离
}
public class MagneticManager
{
public class ChildFormInfo
{
public Form Child { get; set; }
public MagneticLocation Location { get; set; }
public MagneticState State { get; set; }
public bool CutstomSetLocation { get; set; }
}
public int Step { get; set; }
private Form m_mainForm = null;
private List<ChildFormInfo> m_childs= new List<ChildFormInfo>();
public MagneticManager(Form form)
{
m_mainForm = form;
form.LocationChanged += MainForm_LocationChanged;
form.SizeChanged += MainForm_SizeChanged;
form.FormClosed += MainForm_FormClosed;
Step = 20;
}
public void addChild(Form childForm,