当 ClickMode 为 'Hover' 时,如何在 RepeatButton 上设置初始延迟(在触发第一次单击事件之前)?
问问题
498 次
1 回答
1
查看 Reflector 中的代码,如果 ClickMode 设置为 Hover,ButtonBase 从 OnMouseEnter 调用 OnClick,因此您无法设置任何内容来阻止初始点击。如果在 OnMouseEnter 期间进行了 OnClick 调用,您可以继承 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 执行类似的操作。
于 2010-08-14T13:30:37.373 回答