2012-06-15 108 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); 
    } 
}