7,765
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// 鼠标坐标
/// </summary>
private Point PointMouse;
/// <summary>
/// 停靠范围
///
/// 用变量可以支持用户自定义修改属性.
/// </summary>
private int IntDockWidth = 15;
private void Controls_MouseDown( object sender, MouseEventArgs e ) {
PointMouse = new Point( -e.X, -e.Y );
Control c = ( Control )sender;
PointMouse.Offset( -c.Left, -c.Top );
}
private void Controls_MouseMove( object sender, MouseEventArgs e ) {
if ( e.Button == MouseButtons.Left ) {
Point mousePos = System.Windows.Forms.Control.MousePosition;
mousePos.Offset( PointMouse.X, PointMouse.Y );
//判断是否已经处于边缘
if ( ( mousePos.X - System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.X ) <= IntDockWidth ) {
//左边
mousePos.X = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.X;
} else if ( ( System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Right - mousePos.X - this.Width ) <= IntDockWidth ) {
//右边
mousePos.X = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Right - this.Width;
}
if ( ( mousePos.Y - System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Y ) <= IntDockWidth ) {
//上面
mousePos.Y = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Y;
} else if ( ( System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height - mousePos.Y - this.Height ) <= IntDockWidth ) {
//下边
mousePos.Y = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height - this.Height;
}
this.Location = mousePos;
}
}