1. 程式人生 > >winform 可拖動的自定義Label控制元件

winform 可拖動的自定義Label控制元件

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;

namespace IJPrinterSoftware
{
public partial class LabelModule : LabelControl
    {
privatebool IsMouseDown = 
false;
private Point MousePrePosition;

privatevoid init()
        {
            InitializeComponent();
this.MouseDown += new MouseEventHandler(LabelModule_MouseDown);
this.MouseUp += new MouseEventHandler(LabelModule_MouseUp);
this.MouseMove+=new MouseEventHandler(LabelModule_MouseMove);
        }

public LabelModule()

        {
            init();
        }

privatevoid LabelModule_MouseDown(object sender, MouseEventArgs e)
        {
            IsMouseDown = true;
            MousePrePosition = new Point(e.X, e.Y);
this.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.Simple;
this.Cursor = Cursors.SizeAll;
        }


privatevoid LabelModule_MouseUp(object sender, MouseEventArgs e)
        {
            IsMouseDown = false;
this.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.Default;
this.Cursor = Cursors.Default;
        }

privatevoid LabelModule_MouseMove(object sender, MouseEventArgs e)
        {
if (!IsMouseDown) return;
this.Top = this.Top + (e.Y - MousePrePosition.Y);
this.Left = this.Left + (e.X - MousePrePosition.X);
        }
    }
}