ClickModeが'Hover'の場合、(最初のクリックイベントが発生する前に)RepeatButtonに初期遅延を設定するにはどうすればよいですか?
1 に答える
1
Reflectorのコードを見ると、ClickModeがHoverに設定されている場合、ButtonBaseはOnMouseEnterからOnClickを呼び出すため、最初のクリックを防ぐために設定できるものはありません。OnMouseEnter中に行われた場合は、RepeatButtonをサブクラス化し、OnClick呼び出しを完全に抑制しようとすることができます。
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 に答える