万普插件库

jQuery插件大全与特效教程

在按钮上滑动(在按钮上滑动的按钮)

在按钮上滑动

在一组按钮上点击鼠标的左键,然后开始移动鼠标,(有点像拖动按钮,但是按钮不需要移动,所以用了滑动一词)这时会触发按钮鼠标移动事件,此时在事件内编程,和想象的有点不一样。

原本以为按下鼠标左键以后,移动鼠标时事件内会更新鼠标所在按钮的位置信息,但是实际不然,此时,按钮对象被锁定在按下鼠标时的那个按钮上,此时获得的按钮位置永远不变,但是光标位置仍在更新,需要通过光标位置判断鼠标所在按钮的位置,可以实现拖动时代替连续点击的效果。

经过对AI提供的测试代码验证后发现:

原来按钮对象提供一个方法,可以通过光标所在位置,判断某个按钮上面是否有鼠标的存在。

终于,略费周折后,实现了在一组按钮上滑动的事件编程代码。

关键代码如下:

private void GridButton_MouseMove(object sender, MouseEventArgs e)

{

//按下鼠标左键以后,移动鼠标时不再更新鼠标所在按钮的位置信息,

//但是光标位置仍在更新,需要通过光标位置判断鼠标所在按钮的位置,

//可以实现拖动点击的效果。

Point currentPos = this.PointToClient(Cursor.Position);

//this.Text = currentPos.X.ToString() + " " + currentPos.Y.ToString();

Button btn = GetButtonAtPoint(currentPos);

Point pos = (Point)btn.Tag;

int row = pos.X, col = pos.Y;

this.Text = #34;行: {row}, 列: {col}, 数字: {(btn.Text == "" ? "无" : btn.Text)}";

}

private Button GetButtonAtPoint(Point point)

{

LastButton = gridButtons[0, 0];

for (int row = 0; row < GridSize; row++)

{

for (int col = 0; col < GridSize; col++)

{

Button btn = gridButtons[row, col];

if (btn.Bounds.Contains(point))

{

LastButton = btn;

return btn;

}

}

}

return LastButton;

}

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言