在C#应用程序中拖动控件 我写了一个C#应用程序,在应用窗体中,有一个工具条控件,哪个方法或属性可以让鼠标拖动它啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 鼠标事件中 改变 Location 属性.... 更改location属性同时要让你的控件重绘 你控件名称.Invalidate(true)就可以完成你的拖动了 呵呵,好像不是很清楚啊,是哪能个鼠标事件,mousedown事件吗有没有具体的代码啊 1using System;2using System.Drawing;3using System.Windows.Forms;45namespace Yoker.FormUtils6{7 /**//// <summary>8 /// <para>说明:窗体拖动类,通过这个类提供的方法实现窗体上任意控件可辅助拖动窗体</para>9 /// <para>作者:Yoker.Wu</para>10 /// <para>原创地址:http://Yoker.cnblogs.com</para>11 /// </summary>12 public class dragFormClass13 {14 private static bool isMouseDown = false;15 private static Point mouseOffset;16 private static Form _form;17 public dragFormClass() { }1819 /**//// <summary>20 /// 在窗体上增加拖拽事件21 /// </summary>22 /// <param name="control">控件对象</param>23 public static void bindControl(Control control)24 {25 //如果控件为空 26 if (control == null)27 {28 return;29 }30 _form = control.FindForm();31 //增加鼠标拖动窗体移动事件32 control.MouseMove += new MouseEventHandler(control_MouseMove);33 control.MouseDown += new MouseEventHandler(control_MouseDown);34 control.MouseUp += new MouseEventHandler(control_MouseUp);35 }36 /**//// <summary>37 /// 鼠标按下之时,保存鼠标相对于窗体的位置38 /// </summary>39 /// <param name="sender"></param>40 /// <param name="e"></param>41 private static void control_MouseDown(object sender, MouseEventArgs e)42 {43 if (e.Button == MouseButtons.Left)44 {45 Control control = sender as Control;46 int offsetX = - e.X;47 int offsetY = - e.Y;48 //判断是窗体还是控件,从而改进鼠标相对于窗体的位置49 if (!(control is System.Windows.Forms.Form))50 {51 offsetX = offsetX - control.Left;52 offsetY = offsetY - control.Top;53 }54 //判断窗体有没有标题栏,从而改进鼠标相对于窗体的位置55 if (_form.FormBorderStyle != FormBorderStyle.None)56 {57 offsetX = offsetX - SystemInformation.FrameBorderSize.Width;58 offsetY = offsetY - SystemInformation.FrameBorderSize.Height - SystemInformation.CaptionHeight;59 }60 mouseOffset = new Point(offsetX, offsetY);61 isMouseDown = true;62 }63 }64 /**//// <summary>65 /// 移动鼠标的时候改变窗体位置66 /// </summary>67 /// <param name="sender"></param>68 /// <param name="e"></param>69 private static void control_MouseMove(object sender, MouseEventArgs e)70 {71 if (isMouseDown)72 {73 Point mouse = Control.MousePosition;74 mouse.Offset(mouseOffset.X, mouseOffset.Y);75 _form.Location = mouse;76 }77 }78 /**//// <summary>79 /// 松开鼠标的时候,重设事件80 /// </summary>81 /// <param name="sender"></param>82 /// <param name="e"></param>83 private static void control_MouseUp(object sender, MouseEventArgs e)84 {85 if (e.Button == MouseButtons.Left)86 {87 isMouseDown = false;88 }89 }90 }91}92 反射和添加引用的区别 C#提取string中的子串 用C语言编写“学生成绩管理系统”的程序,急求!!! 关于TreeView节点的问题 如何在Web页显示PDF文件呢?求助!!! @@@送分快来抢: 提示无法将类型“type1”隐式转换为“type2”。存在显式转换(是否缺少强制转换?),Why? 向页面写入LinkButton 怎么添加事件 如何用SQL服务器的域名连接数据库 我怎样在水晶报表上加入我输入的时间段 请问:如何在点击ComboBox项时,将其Text属性自定义? 数据保存到数据库 用API的PrinterProperties进行打印机设置的问题
有没有具体的代码啊
1using System;
2using System.Drawing;
3using System.Windows.Forms;
4
5namespace Yoker.FormUtils
6{
7 /**//// <summary>
8 /// <para>说明:窗体拖动类,通过这个类提供的方法实现窗体上任意控件可辅助拖动窗体</para>
9 /// <para>作者:Yoker.Wu</para>
10 /// <para>原创地址:http://Yoker.cnblogs.com</para>
11 /// </summary>
12 public class dragFormClass
13 {
14 private static bool isMouseDown = false;
15 private static Point mouseOffset;
16 private static Form _form;
17 public dragFormClass() { }
18
19 /**//// <summary>
20 /// 在窗体上增加拖拽事件
21 /// </summary>
22 /// <param name="control">控件对象</param>
23 public static void bindControl(Control control)
24 {
25 //如果控件为空
26 if (control == null)
27 {
28 return;
29 }
30 _form = control.FindForm();
31 //增加鼠标拖动窗体移动事件
32 control.MouseMove += new MouseEventHandler(control_MouseMove);
33 control.MouseDown += new MouseEventHandler(control_MouseDown);
34 control.MouseUp += new MouseEventHandler(control_MouseUp);
35 }
36 /**//// <summary>
37 /// 鼠标按下之时,保存鼠标相对于窗体的位置
38 /// </summary>
39 /// <param name="sender"></param>
40 /// <param name="e"></param>
41 private static void control_MouseDown(object sender, MouseEventArgs e)
42 {
43 if (e.Button == MouseButtons.Left)
44 {
45 Control control = sender as Control;
46 int offsetX = - e.X;
47 int offsetY = - e.Y;
48 //判断是窗体还是控件,从而改进鼠标相对于窗体的位置
49 if (!(control is System.Windows.Forms.Form))
50 {
51 offsetX = offsetX - control.Left;
52 offsetY = offsetY - control.Top;
53 }
54 //判断窗体有没有标题栏,从而改进鼠标相对于窗体的位置
55 if (_form.FormBorderStyle != FormBorderStyle.None)
56 {
57 offsetX = offsetX - SystemInformation.FrameBorderSize.Width;
58 offsetY = offsetY - SystemInformation.FrameBorderSize.Height - SystemInformation.CaptionHeight;
59 }
60 mouseOffset = new Point(offsetX, offsetY);
61 isMouseDown = true;
62 }
63 }
64 /**//// <summary>
65 /// 移动鼠标的时候改变窗体位置
66 /// </summary>
67 /// <param name="sender"></param>
68 /// <param name="e"></param>
69 private static void control_MouseMove(object sender, MouseEventArgs e)
70 {
71 if (isMouseDown)
72 {
73 Point mouse = Control.MousePosition;
74 mouse.Offset(mouseOffset.X, mouseOffset.Y);
75 _form.Location = mouse;
76 }
77 }
78 /**//// <summary>
79 /// 松开鼠标的时候,重设事件
80 /// </summary>
81 /// <param name="sender"></param>
82 /// <param name="e"></param>
83 private static void control_MouseUp(object sender, MouseEventArgs e)
84 {
85 if (e.Button == MouseButtons.Left)
86 {
87 isMouseDown = false;
88 }
89 }
90 }
91}
92