2010-08-14 105 views

回答

1

查看Reflector中的代码,如果ClickMode设置为悬停,ButtonBase会从OnMouseEnter调用OnClick,因此没有任何设置可以阻止初始点击。你可以继承的RepeatButton,并尝试完全抑制的OnClick调用,如果它OnMouseEnter在期间作了发言:

public class DelayRepeatButton 
    : RepeatButton 
{ 
    private bool duringMouseEnter = false; 

    protected override void OnMouseEnter(MouseEventArgs e) 
    { 
     try 
     { 
      duringMouseEnter = true; 
      base.OnMouseEnter(e); 
     } 
     finally 
     { 
      duringMouseEnter = false; 
     } 
    } 

    protected override void OnClick() 
    { 
     if (!duringMouseEnter) 
     { 
      base.OnClick(); 
     } 
    } 
} 

如果您希望为其他ClickMode值工作,你可以做的onkeydown,的onkeyup,OnLeftMouseButtonDown和OnLeftMouseButtonUp类似的东西。

+0

这就是完美! – NVM 2010-08-14 13:48:19