鼠标可以点窗体内任何一处。进行拖动操作
解决方案 »
- VS2012总安装失败
- 求解: .NET 类型和 SQL Server 类型对应问题.
- 收藏 不显示删除回复显示所有回复显示星级回复显示得分回复 C#开发C/S结构系统的通信问题[刚刚发的问题怎么没了?]
- 给大家分享个冒泡排序
- 如何用SHA-2加密?
- 代码出错了...序列化程序报错..
- 一个关于iewebcontrokls的问题!急!
- 在启动客户端VSS时,出现Access to file "rights.dat" denied信息,如何解决这个问题
- pictureBox控件如何使用
- 有谁碰到过这种问题,请帮帮忙!!!在IE中看不到我的.net服务器控件!
- 我安装了Office2003,为什么在C#工程里添加引用里找不到Microsoft.Office.Interop.Owc.dll
- 不知道用哪个控件,还请指点
在MouseDown时候记录初始位置
MouseMove调整窗体的位置
MouseUp时取消窗体的移动
MouseDown时候
if 鼠标左键{
记录此时x,y;
onMove = true;
}MouseMove时候
if(onMove){
this.Location = new Point(this.Location.X - 记录的原x + e.X,this.Location.Y - 记录的原y + e.Y);
}MouseUp时候
if 鼠标左键{
onMove = false;
}大概是这样吧 你试试 我没有测
{
if (m.Msg == 0x84 /*WM_NCHITTEST*/)
{
// 分解当前鼠标的坐标
int nPosX = (int)m.LParam & 0xFFFF;
int nPosY = (int)m.LParam >> 16;
if (ClientRectangle.Contains(PointToClient(new Point(nPosX, nPosY))))
{
m.Result = (IntPtr)2; // HTCAPTION;
return;
}
}
base.WndProc(ref m);
}
protected override void WndProc(ref Message m)
这个是自己写。。还是事件里面的生成的?
{
this.mouse_offset = new Point(-e.X,-e.Y);
}private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(e.Button == MouseButtons.Left)
{
Point mousepos = Control.MousePosition;
mousepos.Offset(this.mouse_offset.X,this.mouse_offset.Y-SystemInformation.CaptionHeight);
this.Location = mousepos;
}
}
//private const int WM_NCHITTEST = 0x84;
//private const int HTCLIENT = 0x1;
//private const int HTCAPTION = 0x2; //protected override void WndProc(ref Message m)
//{
// switch (m.Msg)
// {
// case WM_NCHITTEST:
// base.WndProc(ref m);
// if ((int)m.Result == HTCLIENT)
// m.Result = (IntPtr)HTCAPTION;
// return;
// // break;
// }
// base.WndProc(ref m);
//} 把这段代码加上就可以 试试