第一个:选择绘制直线事件
第二个:鼠标左键按下事件
第三个:移动鼠标事件
第四个:松开鼠标事件应该有这四个才对吧,我也是菜哈!

解决方案 »

  1.   

    参考这个:using System;
    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;
    }
    }
    }