当ClickMode为“悬停”时,如何在RepeatButton上设置初始延迟(触发第一次点击事件之前)?
答案 0 :(得分:1)
查看Reflector中的代码,如果ClickMode设置为Hover,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执行类似操作。