2010-04-15 2 views
4

Я могу найти только событие MouseDown и событие MouseUp на изображении в WPF. Это вызывает некоторую проблему, если я делаю MouseDown на некотором изображении, перемещая мышь, а событие MouseUp происходит на другом изображении. Есть ли какие-либо другие события, которые я могу использовать для решения этой проблемы. как элемент MouseClick Event для Button.WPF: событие с кликом изображения

ответ

9

Если вы действительно должны использовать изображение, то есть несколько вещей, которые вы можете сделать, чтобы проверить «щелчок».

  1. Проверьте время между двумя событиями. Если это меньше, чем ваш порог, тогда обработайте мышь нажатием кнопки. Вам нужно будет сохранить время события мыши.

  2. Убедитесь, что 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 случае, опять-таки со значением допуска.

4

Вы уверены, что хотите только изображение или хотите нажать кнопку с изображением в качестве контента? Кнопка с изображением будет иметь событие click.

Смежные вопросы