【发布时间】:2016-06-07 19:10:40
【问题描述】:
我有以下问题:我有一个具有特定颜色的面板,比如红色。 当用户按下鼠标时,这个面板的颜色被存储在一个变量中。然后用户移动,他的鼠标仍然按下,移到另一个面板。当他在那里释放鼠标时,该面板应该获得已存储在变量中的第一个背景颜色。我的代码如下所示:
public Color currentColor;
private void ColorPickMouseDown(object sender, MouseEventArgs e)
{
Panel pnlSender = (Panel)sender;
currentColor = pnlSender.BackColor;
}
private void AttempsColorChanger(object sender, MouseEventArgs e)
{
Panel pnl = (Panel)sender;
pnl.BackColor = currentColor;
}
我需要先确定发送者,因为有很多可能的面板可以触发此事件。第一个 MouseDown 方法工作得很好,颜色很好地存储在变量中。然而,当用户执行我上面描述的操作时,第二个甚至不会被触发。当服务器点击第二个面板时,它会起作用(我猜点击中也有一个 MouseUp 部分)。
这里有什么问题?为什么之前用户按住鼠标键没有触发事件?
【问题讨论】:
-
如果您将鼠标停留在第一个面板上(向下点击然后向上点击而不移动),是否会触发鼠标向上事件?我怀疑是这样。
-
是的,它确实如此。似乎程序在 MouseDown 事件之后不再跟踪鼠标的位置...
-
它实际上是由您的原始面板捕获的,即触发的
MouseUp事件。