c# - 创建自己的cs文件后覆盖OnMouseMoveEvent
问题描述
我的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;
}
}
推荐阅读
- python - pandas concat 添加为带有 nans 的列?
- scala - 使用 ScalaCheck / ScalaTest 子句时令人困惑的单元测试代码执行顺序
- java - 如何避免在java中重复代码密集的if语句
- r - 您可以将 col 和 row 总计添加到 R Shiny 数据表中吗?
- graph - 如何绘制上面的两张图?
- android - 滚动到最后一个位置时如何将项目添加到 PagingListAdpter
- javascript - 如何使用 JavaScript 获取 CSS 属性的计算(或指定)值(不是解析或使用的值)?
- django - 添加 djoser 后 Apache2 未显示网站,内部服务器错误 500
- azure-cognitive-search - 如何在 Azure 搜索索引中通过 csv 导入 geography.point 的集合
- linux - IP标头可以在不同机器上具有不同的偏移量吗?