2
2 개의 버튼이있는 사용자 정의 컨트롤이 있습니다.이 컨트롤은 마우스가 컨트롤 영역 안에있을 때만 표시되어야합니다.MouseLeave가 실행되지 않았습니다. C# WinForms
private void Node_MouseEnter(object sender, EventArgs e){
btn1.Show();
btn2.Show();
}
을 그리고 다음과 같이 숨어 :
I는 다음과 같이 버튼을 보여주는거야
문제는 때때로 (임의의 상황)이MouseLeave
이벤트가 발생하지 않는 것을
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();
}
하고, 버튼은 컨트롤 외부에있는 마우스에서도 볼 수 있습니다.
여러 이벤트가 충돌 할 수 있습니까?
중단 점을 설정하여 이벤트가 실제로 발생하지 않는지 확인할 수 있습니까? 아니면 관측 된 행동을 근거로하고 있습니까? –
관찰 된 동작은이를 보여 주며 상황을 확인하는 디버깅 (콘솔에 인쇄)을하고 있습니다. – guanabara
OnMouseLeave를 사용하거나 사용하지 않고 코드를 테스트했으며 두 경우 모두 정상적으로 작동합니다. OnMouseLeave 메소드를 오버라이드 (override) 해 추가 체크를하고있는 이유는 무엇입니까? 여기서는 필요하지 않습니다. – virious