要移动窗体中的控件,要建立三个事件,鼠标按下事件,鼠标移动事件,鼠标放开事件
在建立三个事件前,还应找到控件的位置,这里介绍两个方法
方法一:
使用MouseHover和MouseLeave事件
当鼠标在要移动的控件上时,光标显示为VSplit,表示可移,当离开时光标为默认表示不可移
private void pictureBox1_MouseHover(object sender, EventArgs e)
{
this.Cursor = Cursors.VSplit;
}
private void pictureBox1_MouseLeave(object sender, EventArgs e)
{
this.Cursor = Cursors.Default;
}
方法二:
当鼠标位置在控件的区域内,光标显示为VSplit,表示可移,当离开这个区域光标为默认表示不可移
/// <summary>
/// 方法二
/// 当到达鼠标要移动的控件区域时,更改鼠标形状
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
//label1.Text = this.Size.Width+" "+ e.X.ToString()+" "+this.Width.ToString()+" "+this.Right.ToString();
if ((e.X >= pictureBox1.Location.X-1 && e.X <= pictureBox1.Location.X + pictureBox1.Width) && (e.Y >= pictureBox1.Location.Y-1 && e.Y <= pictureBox1.Location.Y + pictureBox1.Height))
{
this.Cursor = Cursors.VSplit;
}
else
{
this.Cursor = Cursors.Default;
}
}
当然也可使用句柄,使用API函数,当鼠标在控件上时,看能否得到控件句柄指针
鼠标按下事件
得到鼠标位置,如果鼠标在控件上,bIsMoving可移变量为真
鼠标移动事件
计算移动的位置,并把它限制在Form窗口内
鼠标放开事件
bIsMoving可移变量为假
代码如下
移动窗体中的控件
最新推荐文章于 2020-02-04 16:10:35 发布