怎么让控件跟随鼠标移动? 我想要让一个PictureBox控件跟随着鼠标移动,可以实现吗?有没有什么简单的方法? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 最简单的有效的方法,请你记得给我分。private void Form1_MouseMove(object sender, MouseEventArgs e) { this.pictureBox1.Location = new Point(e.X, e.Y); } 参看http://blog.csdn.net/knight94/archive/2006/04/14/663089.aspx这里面是窗体随着鼠标移动,你进行修改即可。 楼上的方法在鼠标移到其它控件上时就无效了。要先Capture 或者 重载消息处理函数 在mousedown,mousemove,mouseup三个事件里进行处理,改变控件的location就OK了 private bool blnState=false; private void Form1_MouseDown(object sender, MouseEventArgs e) { blnState=true; ox=e.X; oy=e.Y; } int ox=0; int oy=0; private void Form1_MouseMove(object sender, MouseEventArgs e) { try { if(blnState) { this.Location =new Point(this.Location.X-(ox-e.X),this.Location.Y-(oy-e.Y) ); } } catch(Exception ex) { MessageBox.Show(ex.Message ); } } private void Form1_MouseUp(object sender, MouseEventArgs e) { blnState=false; } 咦,对哦,就像coowoo说的那样,当鼠标进入其它控件时就不行了,谁有什么好的解决方法吗? private bool blnState=false; private void Form1_MouseDown(object sender, MouseEventArgs e) { blnState=true; ox=e.X; oy=e.Y; } int ox=0; int oy=0; private void Form1_MouseMove(object sender, MouseEventArgs e) { try { if(blnState) { this.Location =new Point(this.Location.X-(ox-e.X),this.Location.Y-(oy-e.Y) ); } } catch(Exception ex) { MessageBox.Show(ex.Message ); } } private void Form1_MouseUp(object sender, MouseEventArgs e) { blnState=false; } 唉,算了,这个贴就当送份贴吧,说话要算数,送分。我新开了一个帖子,还是关于这个问题,谁进来帮忙解决一下。谢谢http://community.csdn.net/Expert/topic/4755/4755759.xml?temp=.7238733 利用消息循环来处理: private const int WM_MOUSEMOVE = 0x0200; protected override void WndProc(ref Message m) { if (m.Msg == WM_MOUSEMOVE) { button1.Location = System.Windows.Forms.Cursor.Position; } base.WndProc(ref m); }http://www.cnblogs.com/huangliang C# 中 TreeView 中一个相关问题 winfrom 计算两个日期之间的天数?求救,求救。在线等!! 关闭窗口的时候最小化的问题 帮忙 向高手请教:listview 的行移动后,其行的背景颜色没了 后台脚本的问题 验证控件的正则表达式 当鼠标移动到单元格上时,DATALIST 不能改变颜色 sqlserver里字符串的截取 哪位大虾有免费的pet shop源码,如能提供小弟不胜感激! 请问垃圾回收中的 Generation 代 是什么意思? 一个关于主从窗体数据交互的问题?
{
this.pictureBox1.Location = new Point(e.X, e.Y);
}
http://blog.csdn.net/knight94/archive/2006/04/14/663089.aspx这里面是窗体随着鼠标移动,你进行修改即可。
要先Capture 或者 重载消息处理函数
private bool blnState=false; private void Form1_MouseDown(object sender, MouseEventArgs e)
{
blnState=true;
ox=e.X;
oy=e.Y; }
int ox=0;
int oy=0;
private void Form1_MouseMove(object sender, MouseEventArgs e)
{ try
{
if(blnState)
{
this.Location =new Point(this.Location.X-(ox-e.X),this.Location.Y-(oy-e.Y) );
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message );
}
} private void Form1_MouseUp(object sender, MouseEventArgs e)
{
blnState=false; }
{
blnState=true;
ox=e.X;
oy=e.Y; }
int ox=0;
int oy=0;
private void Form1_MouseMove(object sender, MouseEventArgs e)
{ try
{
if(blnState)
{
this.Location =new Point(this.Location.X-(ox-e.X),this.Location.Y-(oy-e.Y) );
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message );
}
} private void Form1_MouseUp(object sender, MouseEventArgs e)
{
blnState=false; }
我新开了一个帖子,还是关于这个问题,谁进来帮忙解决一下。谢谢
http://community.csdn.net/Expert/topic/4755/4755759.xml?temp=.7238733
private const int WM_MOUSEMOVE = 0x0200;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_MOUSEMOVE)
{
button1.Location = System.Windows.Forms.Cursor.Position;
}
base.WndProc(ref m);
}
http://www.cnblogs.com/huangliang