2010-04-15 665 views
4

我只能在WPF中的圖片上找到MouseDown事件和MouseUp事件。 這會導致一些問題,如果我在某些圖像上執行MouseDown,則在某些其他圖像上移動鼠標和MouseUp事件。 是否有任何其他事件可以用來解決此問題。像ButtonClick事件的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

您確定只需要一張圖片,或者您是否真的想要一個圖片作爲內容的按鈕?帶有圖像的按鈕將具有點擊事件。