读书人

Winform有关问题拖动工作区来移动窗

发布时间: 2012-02-23 22:01:34 作者: rapoo

Winform问题,拖动工作区来移动窗体
一般窗体都是通过移动标题栏来移动位置,以下代码要实现拖动工作区来移动窗体



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace MoveForm
{
public partial class Form1 : Form
{
Point myPoint;
public Form1()
{
InitializeComponent();
}

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
myPoint = Control.MousePosition;
myPoint.Offset(myPoint.X, myPoint.Y);
this.DesktopLocation = myPoint;
}
}

private void Form1_MouseDown(object sender, MouseEventArgs e)
{
myPoint = new Point(-e.X, -e.Y);
}
}
}


运行后 我拖动窗体,但鼠标总不位于窗体上,一点窗体就自动往下方走。反正难表达,希望高手运行下,给我指出代码不对的地方

[解决办法]
方案3:楼主的想法。(优点:修改一下可以拖动没有句柄的控件等)

C# code
Point downPoint;private void Form1_MouseDown(object sender, MouseEventArgs e){    downPoint = new Point(e.X, e.Y); }private void Form1_MouseMove(object sender, MouseEventArgs e){    if (e.Button == MouseButtons.Left)    {        Location = new Point(Location.X + e.X - downPoint.X,             Location.Y + e.Y - downPoint.Y);    } } 

读书人网 >C#

热点推荐