介绍
这篇文章将为大家详细讲解有关怎么在c#中利用WinForm上实现窗体上控件自由拖动功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
具体如下:
首先在窗体上放一个PictrueBox控件,命名为pb1,拖动完整代码如下:
using 系统; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using 来; using 包含; using System.Windows.Forms; namespace WinFormDrag { public 才能;partial  class Form1 :形式 {才能 ,,,//鼠标按下坐标(控制控件的相对坐标) ,,,Point mouseDownPoint =, Point.Empty; ,,,//显示拖动效果的矩形 ,,,Rectangle rect =, Rectangle.Empty; ,,,//是否正在拖拽 ,,,bool isDrag =,假; ,,,public Form1 () ,,,{ ,,,,,InitializeComponent (); ,,,} ,,,private void Form1_Paint (object ,发送方,PaintEventArgs e) ,,,{ ,,,,,if (rect !=, Rectangle.Empty) ,,,,,{ ,,,,,,,if (isDrag) ,,,,,,,{//画一个和控制一样大小的黑框 ,,,,,,,,,e.Graphics.DrawRectangle (Pens.Black,矩形); ,,,,,,,} ,,,,,,, ,,,,,,,{ ,,,,,,,,,e.Graphics.DrawRectangle (new 笔(this.BackColor),矩形); ,,,,,,,} ,,,,,} ,,,} ,,,///,& lt; summary> ,,,///,按下鼠标时 ,,,///,& lt;/summary> ,,,///,& lt; param name=皊ender"祝辞& lt;/param> ,,,///,& lt; param name=癳"祝辞& lt;/param> ,,,private void pb1_MouseDown (object ,发送方,MouseEventArgs e) ,,,{ ,,,,,if (e.Button ==, MouseButtons.Left) ,,,,,{ ,,,,,,,mouseDownPoint =, e.Location; ,,,,,,,//记录控件的大小 ,,,,,,,rect =, pb1.Bounds; ,,,,,} ,,,} ,,,///,& lt; summary> ,,,///,移过时 ,,,///,& lt;/summary> ,,,///,& lt; param name=皊ender"祝辞& lt;/param> ,,,///,& lt; param name=癳"祝辞& lt;/param> ,,,private void pb1_MouseMove (object ,发送方,MouseEventArgs e) ,,,{ ,,,,,if (e.Button ==, MouseButtons.Left) ,,,,,{ ,,,,,,,isDrag =,真的; ,,,,,,,//重新设置矩形的位置,跟随鼠标移动 ,,,,,,,rect.Location =, getPointToForm (new 点(e.Location.X 安康;mouseDownPoint.X, e.Location.Y 作用;mouseDownPoint.Y)); ,,,,,,,this.Refresh (); ,,,,,} ,,,} ,,,///,& lt; summary> ,,,///,释放鼠标按钮时 ,,,///,& lt;/summary> ,,,///,& lt; param name=皊ender"祝辞& lt;/param> ,,,///,& lt; param name=癳"祝辞& lt;/param> ,,,private void pb1_MouseUp (object ,发送方,MouseEventArgs e) ,,,{ ,,,,,if (e.Button ==, MouseButtons.Left) ,,,,,{ ,,,,,,,if (isDrag) ,,,,,,,{ ,,,,,,,,,isDrag =,假; ,,,,,,,,,//移动控制到放开鼠标的地方 ,,,,,,,,,pb1.Location =, rect.Location; ,,,,,,,,,this.Refresh (); ,,,,,,,} ,,,,,,,重置(); ,,,,,} ,,,} ,,,//重置变量 null null null null null null null null null null null null null怎么在c#中利用WinForm上实现窗体上控件自由拖动功能