【发布时间】:2018-12-18 06:45:15
【问题描述】:
我已经向图片框添加了一个自定义控件。我需要检查该控件是否已被移动。
目前我使用的是pictureboxmousemove 事件,这显然有一些问题。
我也尝试将mousemouse 事件添加到控件中。它似乎不起作用。我该如何解决这个问题?
pictureBox5.Controls.Clear();
var c = new FrameControl();
c.Size = obj.Size;
c.Location = obj.Location;
pictureBox5.Controls.Add(c);
更新:
我尝试过覆盖 Frame Control 的 mousemove 事件,但它似乎不起作用。
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
//Debugger does not hit breakpoint
}
【问题讨论】:
-
"...它似乎不起作用..." - 此信息并没有真正的帮助。它没有说明究竟是什么不起作用,即您是否在任何地方收到任何错误消息,您是否尝试调试问题以确保它确实完成了预期的事情。
-
是什么让控件移动?默认情况下它不会移动,因此您的代码允许并使其移动。从那里分派一个事件怎么样?
-
@JohnB 请查看更新。
-
OnMouseMove 在鼠标指针在控件范围内移动时引发。这允许通过使用相对
e.Location值更新控件的位置来移动控件。由于此 Control 移动受 Container 的 边界约束,因此您可以使用 something like this 计算移动(已经在其他地方提到过 :)。您的自定义控件应更新并存储其新位置,以便主过程可以在需要时检索此引用。 -
@ZorgoZ 这是我使用的控件stackoverflow.com/a/53774101/848968
标签: c# .net winforms system.drawing