C#实现磁性窗体(吸附、剥离、移动)

本文介绍如何使用C#编程实现磁性窗体功能,包括窗体的吸附、剥离及自由移动。针对网上现有实现的不足,作者重写了代码,使得子窗体能够脱离父窗体独立移动,并提出了可扩展性,如增加吸附桌面边缘等特性。
摘要由CSDN通过智能技术生成

最近做东西需要用到这个,网上找了一下有不少人实现了,比如这位兄弟

http://blog.csdn.net/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, 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值