1。重寫Wndproc
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 WindowsExample
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0201) //鼠標左鍵按下去的消息
{
m.Msg = 0x00A1; //更改消息爲非客戶區按下鼠標
m.LParam = IntPtr.Zero; //默認值
m.WParam = new IntPtr(2); //鼠標放在標題欄內
}
base.WndProc(ref m);
}
}
}
2。調用API函數
[DllImport("user32.dll")]
public static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wparam, int lparam);
protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
if (e.Button == MouseButtons.Left)//按下的是鼠標左鍵
{
Capture = false;//釋放鼠標,使能夠手動操作
SendMessage(Handle, 0x00A1, 2, 0);//拖動窗體
}
}