2012-06-15 159 views
1

我有一個可垂直拖動的標籤頁內的用戶控件。該控件也是可選的。我希望用戶能夠點擊該項目來選擇它,但我不希望MouseClick事件在完成拖動時觸發 - 只有MouseUp事件應該觸發。 IE瀏覽器。用戶完成拖動後不應選擇該項目。有什麼建議?MouseMove後防止MouseClick事件

+0

您是否使用WPF或ASP.NET?你可以請你展示你的事件處理程序嗎? – fenix2222

回答

0

嘗試在拖動時使用等於true的拖動布爾值,然後在短暫計時器運行後將其關閉。這樣,您可以在MouseClick事件中添加if語句以查看它是否最近被拖動。

1

我假設這是WinForms。

當你說你有一個用戶控件時,你的意思是你有一個從UserControl派生的類嗎?在這種情況下,您可以覆蓋OnMouseClick方法,而不是呼叫base.OnMouseClick(e),這將阻止MouseClick開火。

像SAMHI建議,您可以使用在拖動開始時設置爲true一個布爾值,一旦OnMouseClick被調用,您可以在布爾值設置爲false,允許鼠標點擊拖動完成後發生。

例子:

public class MyUserControl : UserControl 
{ 
    bool dragging = false; 

    // ... 

    protected override void OnMouseClick(MouseEventArgs e) 
    { 
     if (dragging) 
     { 
      // We've finished dragging, don't call MouseClick 
      dragging = false; 
      return; 
     } 

     // Not dragging, fire MouseClick 
     base.OnMouseClick(e); 
    } 
}