首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

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

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);    } } 

热点排行