我只能在WPF中的图像上找到MouseDown事件和MouseUp事件。 如果我在某些图像上执行MouseDown,则会导致一些问题,移动鼠标并在其他图像上发生MouseUp事件。 是否有任何其他事件可用于解决此问题。像ButtonClick元素的MouseClick事件。
答案 0 :(得分:10)
如果你真的必须使用图像,那么你可以做几件事来检查“点击”。
检查两个事件之间的时间。如果它低于您的阈值,则将鼠标视为单击。您需要存储鼠标按下事件的时间。
检查两个事件的sender
是否相同。同样,您需要存储鼠标按下事件的sender
。
您可能还想检查它是按下并释放的左按钮。
结合两者:
private DateTime downTime;
private object downSender;
private void Image_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
this.downSender = sender;
this.downTime = DateTime.Now;
}
}
private void Image_MouseUp(object sender, MouseButtonEventArgs e)
{
if (e.LeftButton == MouseButtonState.Released &&
sender == this.downSender)
{
TimeSpan timeSinceDown = DateTime.Now - this.downTime;
if (timeSinceDown.TotalMilliseconds < 500)
{
// Do click
}
}
}
实际上你可以做第三件事:检查鼠标位置。
private Point downPosition;
保存位置:
this.downPosition = e.GetPosition(sender as Image);
然后再次使用公差值在MouseUp
事件中进行检查。
答案 1 :(得分:5)
您确定只想要一张图片,或者您是否真的想要一张带有图片内容的按钮?带图像的按钮将具有点击事件。