当ClickMode为'Hover‘时,我如何在RepeatButton上设置初始延迟(在第一次点击事件被触发之前)?
发布于 2010-08-14 21:30:37
查看Reflector中的代码,如果ClickMode设置为Hover,则ButtonBase从OnMouseEnter调用OnClick,因此您无法设置任何内容来阻止初始单击。如果OnClick调用是在OnMouseEnter过程中进行的,您可以子类化RepeatButton并尝试完全禁止该调用:
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执行类似的操作。
https://stackoverflow.com/questions/3483306
复制相似问题