マウスがコントロールの領域内にある場合にのみ表示される2つのボタンを持つユーザーコントロールがあります。
次のようなボタンを表示しています。
private void Node_MouseEnter(object sender, EventArgs e)
{
btn1.Show();
btn2.Show();
}
そして、このように隠します:
protected override void OnMouseLeave(EventArgs e)
{
if (this.ClientRectangle.Contains(this.PointToClient(Control.MousePosition)))
return;
else base.OnMouseLeave(e);
}
private void Node_MouseLeave(object sender, EventArgs e)
{
btn1.Hide();
btn2.Hide();
}
問題は、(ランダムな状況で) 時々、MouseLeave
イベントが発生せず、マウスがコントロールの外にあってもボタンが表示されたままになることです。
複数のイベントが競合する可能性はありますか?