当前位置: 移动技术网 > IT编程>开发语言>c# > WPF实现控件拖动的示例代码

WPF实现控件拖动的示例代码

2019年07月18日  | 移动技术网IT编程  | 我要评论
实现控件拖动的基本原理是对鼠标位置的捕获,同时根据鼠标按键的按下、释放确定控件移动的幅度和时机。 简单示例: 在grid中有一个button,通过鼠标事件改

实现控件拖动的基本原理是对鼠标位置的捕获,同时根据鼠标按键的按下、释放确定控件移动的幅度和时机。

简单示例:

在grid中有一个button,通过鼠标事件改编button的margin属性,从而改变button在grid中的相对位置。

<grid name="gd">
  <button width=90 height=30 name="btn">button</button>
</grid>

为button控件绑定三个事件:鼠标按下、鼠标移动、鼠标释放

public systemmap()
{
   initializecomponent();
   btn.mouseleftbuttondown += btn_mouseleftbuttondown;
   btn.mousemove += btn_mousemove;
   btn.mouseleftbuttonup += btn_mouseleftbuttonup;
}

定义变量+鼠标按下事件

point pos = new point();
void btn_mouseleftbuttondown(object sender, mousebuttoneventargs e)
{
  button tmp = (button)sender;
  pos = e.getposition(null);
  tmp.capturemouse();
  tmp.cursor = cursors.hand;
}

鼠标移动事件

void btn_mousemove(object sender, mouseeventargs e)
{
   if (e.leftbutton==mousebuttonstate.pressed)
   {
      button tmp = (button)sender;
      double dx = e.getposition(null).x - pos.x + tmp.margin.left;
      double dy = e.getposition(null).y - pos.y + tmp.margin.top;
      tmp.margin = new thickness(dx, dy, 0, 0);
      pos = e.getposition(null);
   }
}

鼠标释放事件

void btn_mouseleftbuttonup(object sender, mousebuttoneventargs e)
{
     button tmp = (button)sender;
     tmp.releasemousecapture();
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网