创建自己的 cs 文件后覆盖 OnMouseMoveEvent
Override OnMouseMoveEvent after creating own cs file
我的 movable_picturebox.cs 文件包含:
public class movable_picturebox : PictureBox
{
public movable_picturebox(IContainer container)
{
container.Add(this);
}
Point point;
protected override void OnMouseDown(MouseEventArgs e)
{
point = e.Location;
base.OnMouseDown(e);
}
protected override void OnMouseMove(MouseEventArgs e)
{
if(e.Button == MouseButtons.Left)
{
this.Left += e.X - point.X;
this.Top += e.Y - point.Y;
}
}
}
现在,当我在 winforms 中添加我的 moveable_picturebox 元素时,我可以通过在任意位置按住鼠标来移动它。
我需要做什么才能停止此活动?例如:
我启动程序,
我将图片框移动到特定位置,
我需要停止这个事件,不能移动这个图片框。我需要再次覆盖此事件,但是我该怎么做呢?代码应该包含什么?
无需再次覆盖该方法,只需在现有方法中添加另一个条件检查即可。有一个布尔值,您可以在其中设置是否 canMovePictureBox
,并将函数更改为
protected override void OnMouseMove(MouseEventArgs e)
{
if(e.Button == MouseButtons.Left && canMovePictureBox)
{
this.Left += e.X - point.X;
this.Top += e.Y - point.Y;
}
}
我的 movable_picturebox.cs 文件包含:
public class movable_picturebox : PictureBox
{
public movable_picturebox(IContainer container)
{
container.Add(this);
}
Point point;
protected override void OnMouseDown(MouseEventArgs e)
{
point = e.Location;
base.OnMouseDown(e);
}
protected override void OnMouseMove(MouseEventArgs e)
{
if(e.Button == MouseButtons.Left)
{
this.Left += e.X - point.X;
this.Top += e.Y - point.Y;
}
}
}
现在,当我在 winforms 中添加我的 moveable_picturebox 元素时,我可以通过在任意位置按住鼠标来移动它。
我需要做什么才能停止此活动?例如: 我启动程序, 我将图片框移动到特定位置, 我需要停止这个事件,不能移动这个图片框。我需要再次覆盖此事件,但是我该怎么做呢?代码应该包含什么?
无需再次覆盖该方法,只需在现有方法中添加另一个条件检查即可。有一个布尔值,您可以在其中设置是否 canMovePictureBox
,并将函数更改为
protected override void OnMouseMove(MouseEventArgs e)
{
if(e.Button == MouseButtons.Left && canMovePictureBox)
{
this.Left += e.X - point.X;
this.Top += e.Y - point.Y;
}
}