winform 可拖动的自定义Label控件

效果预览:

实现步骤如下:

(1)首先在项目上右击选择:添加->新建项,添加自定义控件

(2)自定义的一个Label让它继承LabelControl控件,LabelControl控件是DevExpress控件库里面的一种,和Label控件差不多,想了解更多关于DevExpress控件,推荐到DevExpress控件论坛学习:http://www.dxper.net/

public partial class LabelModule : LabelControl

(3)这个Label需要实现的MouseDown。

private void 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;

}

(4)MouseUp,也就是鼠标弹起的方法。

private void LabelModule_MouseUp(object sender, MouseEventArgs e)

{

IsMouseDown = false;

this.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.Default;

this.Cursor = Cursors.Default;

}

(5)MouseMove,也就是鼠标移动时的方法。

private void 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);

}

完整代码:LabelModule.cs

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

{

private bool IsMouseDown = false;

private Point MousePrePosition;

private void init()

{

InitializeComponent();

this.MouseDown += new MouseEventHandler(LabelModule_MouseDown);

this.MouseUp += new MouseEventHandler(LabelModule_MouseUp);

this.MouseMove+=new MouseEventHandler(LabelModule_MouseMove);

}

public LabelModule()

{

init();

}

private void 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;

}

private void LabelModule_MouseUp(object sender, MouseEventArgs e)

{

IsMouseDown = false;

this.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.Default;

this.Cursor = Cursors.Default;

}

private void 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);

}

}

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-26 19:17:06

winform 可拖动的自定义Label控件的相关文章

自定义Label控件

最近开发过程中有一个需求就是修改label控件的模板,使其能够在鼠标移近的时候变成TextBox,从而方便输入,然后进行相应的修改,最终达到动态修改Label的目的,这里贴出相应的代码,并做简要的分析. 在上述例子中我们通过TemplateBinding来进行相应的绑定,并配合相应的Trigger来实现相关的效果,这里就此介绍一下!

C# winform自定义Label控件使其能设置行距

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; using System.ComponentModel; namespace WindowsFormsApplication10 { public partial class LabelTx : System.Windows.Forms.Label { int lineDistanc

自定义Imageview控件实现多种手势操作 (拖动、水平缩放、竖直缩放、等比例缩放、双击、长按)

项目中需要使用自定义控件的多种手势操作,之前在网上查阅资料的时候发现能找到的一般是只实现了其中的几种,这次就把我做的控件分享一下,人人为我,我为人人嘛,哈哈! 这个自定义控件实现的主要功能是控件的拖动和缩放(注意:不是对控件中的图片进行操作,话说很多帖子都把这两个混了),其中缩放可以按照三个方向进行,就是水平.竖直和等比例.双击操作只做了一个提示,长按加上了一个简单的弹出菜单. 抱歉的是没有足够的时间写详细注释了,如果跟你需要的功能相同就请直接调用,要是需要改代码就费点神自己读懂代码吧,看不懂的

WINFORM 自定义开关按钮控件-

本文章转载:http://www.cnblogs.com/feiyangqingyun/archive/2013/06/15/3137597.html OK,大工告成,上图演示效果. 源码下载:http://files.cnblogs.com/feiyangqingyun/myButtonCheckTest.zip WINFORM 自定义开关按钮控件-,布布扣,bubuko.com

在Winform界面使用自定义用户控件及TabelPanel和StackPanel布局控件

在很多时候,我们做一些非常规化的界面的时候,往往需要创建一些用户控件,在其中绘制好一些基础的界面块,作为后续重复使用的一个单元,用户控件同时也可以封装处理一些简单的逻辑.在开发Winform各种类型项目,我都时不时需要定制一些特殊的用户控件,以方便在界面模块中反复使用.我们一般是在自定义的用户控件里面,添加各种各样的界面控件元素,或者封装一些特殊的函数处理共外部调用等.本篇随笔主要介绍基于DevExpress的Winform开发经验,介绍一个类似看板信息的用户控件,并在TabelLayout和S

Label控件如何根据字符串自定义大小

一.. this.label_Msg.AutoSize = false;  //设置label空件不能自动大小 二.. 用代码控制label控件的大小 1.根据字符串.label的宽度 计算字符串的面积,函数如下: /// <summary> /// 计算字符串的面积 /// </summary> /// <param name="msg">字符串</param> /// <param name="labelWidth&q

自定义HtmlHelper控件

在asp.net mvc 中每一个Html控件都返回了MvcHtmlString ,他继承了HtmlString.下面自定义一个关于显示男女性别的自定义Html控件,使在创建页面时,可以直接调用该自定义的Html控件.可以查看其他的Html控件返回的是HtmlHelper,所以自定义的时候也要返回相同的类型直接在Controls文件夹下建立要自定义的html控件代码如下: using System.Web.Mvc; using System.Text; namespace System.Web.

Flex 自定义打印控件编写

打印历来是web应用一个比较棘手的问题,幸好flex web应用是运行在flash player上的,flash player可以访问打印机,所以flex 应用可以实现比较强大的打印功能.Flex 自身提供的printjob.flexprintjob相对来说用起来不是很方便,对于有严格纸张设置.翻页等打印需求,略显功能不足,因此需要基于printjob或flexprintjob来完善flex的打印功能,及自定义打印控件. 本控件核心为: 1)PrintManager,打印控制核心类 2)IPri

自定义View控件(手写,xib)须知

 1. 目的 :提高代码的复用性,屏蔽内部的实现细节 2. 步骤 :    * 1> 自定义一个类继承于UIView   * 2> 在initWithFrame方法中添加子控件   * 3> 在layoutSubviews中设置子控件的位置   * 4> 提供一个属性保存外界传入的数据(模型对象), 重写setter方法设置子控件的数据 3. 类工厂方法(便利构造器):   * 按照苹果的风格和规范, 一般情况一个用于创建对象的对象方法会对应一个类方法   * 可以通过类工厂方法,