2010-08-14 106 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