第一个:选择绘制直线事件
第二个:鼠标左键按下事件
第三个:移动鼠标事件
第四个:松开鼠标事件应该有这四个才对吧,我也是菜哈!
第二个:鼠标左键按下事件
第三个:移动鼠标事件
第四个:松开鼠标事件应该有这四个才对吧,我也是菜哈!
解决方案 »
- 问: C# 删除数据库中的信息时出现的问题
- “System.Data.SqlClient.SqlException”类型的异常
- combobox选择某一项?
- 求一个通过代理服务器访问pop3服务器,并收mail的例子。
- 呵呵。。大家在工作之余听听 回忆2005 保定方言版,挺搞笑的
- ContextBoundObject--RealProxy问题--只能拦截到构造函数调用,拦截不到普通方法调用,why?
- 这样功能如何实现
- 从C# API的学习中,你能得到什么???
- sqlDataAdapter自动生成sqlUpdateCommand的SQL问题?
- 菜鸟提问 C#/.net有对应的微服务和docker技术的相关技术吗~
- 如何将Word、Excel文件转换成.bmp文件格式?
- 有人做过 PC 和 Pocket PC 相连的项目吗?
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;namespace LiBo.WinControls.Forms {
/// <summary>
/// DragForm 类是可
/// </summary>
public class DragForm : System.Windows.Forms.Form { private bool dragEnable;
private bool dragging;
private int xOld, yOld; public DragForm() : base() {
dragEnable = false;
} /// <summary>
/// 获取或设置一个值,该值指示窗体是否可以通过鼠标左键拖动。
/// </summary>
[DefaultValue(false)]
[Category("Behavior")]
[Description("指示窗体是否可以通过鼠标左键拖动")]
public bool DragEnable {
get { return dragEnable; }
set { dragEnable = value; }
} protected override void OnMouseDown(MouseEventArgs e) {
if(dragEnable && e.Button == MouseButtons.Left) {
// 保存当前鼠标的位置,可以用它来计算鼠标移动的距离
xOld = MousePosition.X;
yOld = MousePosition.Y;
// 标识鼠标正在拖动窗体
dragging = true;
}
} protected override void OnMouseMove(MouseEventArgs e) {
if(dragEnable && dragging) {
// 计算出鼠标在 X 和 Y 坐标方向上移动的距离
int dx = MousePosition.X - xOld;
int dy = MousePosition.Y - yOld; // 根据上面的结果计算出窗体偏移后的位置
Point point = this.Location;
point.Offset(dx, dy); // 设置上面的偏移位置为窗体的位置
this.Location = point; // 保存当前鼠标的位置,用于下一个循环的计算
xOld = MousePosition.X;
yOld = MousePosition.Y;
}
} protected override void OnMouseUp(MouseEventArgs e) {
if(dragEnable && e.Button == MouseButtons.Left)
dragging = false;
}
}
}