문제 설명
외부를 클릭하면 패널을 닫아야 함(초점 상실) (Need To Close A Panel When Clicked Outside (Lost Focus))
극복할 수 없는 문제가 있습니다.
내 응용 프로그램에는 시작 시 패널에 양식을 로드하는 사용자 정의 클래스가 있습니다. 그런 다음 기본 양식의 버튼을 클릭하면 패널이 사용자에게 표시되는 것으로 표시됩니다.
내 문제는 사용자가 패널 외부를 클릭할 때 패널을 숨길 수 있기를 원한다는 것입니다. (기본 양식으로 돌아가기).
지금까지 Form_Deactivate
, Form_Leave
, Form_LostFocus
, 를 시도했습니다. Panel_Leave
및 Panel_LostFocus
이벤트가 발생하지만 패널을 숨기기 위해 이벤트를 일관되게 트리거하는 이벤트는 없는 것 같습니다.
Public Class cls_UserObjects
Private frm As frmUsers
Public pnl As Panel
Public Sub ShowUserPanel()
Try
frm = New frmUsers
frm.TopLevel = False
pnl.Controls.Add(frm)
frm.Show()
frm.Focus()
....
End Class
그런 다음 기본 양식에서 아래 코드를 호출하여 양식을 패널에 빌드합니다.
class_Users.pnl = pnlUsers
class_Users.ShowUserPanel()
그리고 pnlUsers.Visible = True
를 사용자에게 보여주기 위해
닫을 수 없는 것 같습니다. 패널이 LostFocus를 제대로 지원하지 않는다는 것을 이해하지만 이 문제를 해결할 수는 없습니다. 내 양식/패널을 여는 방법과 관련이 있을 수 있지만 외부 호출에서 내 양식 내의 컨트롤을 더 잘 제어할 수 있도록 클래스를 사용하여 양식을 여는 것이 좋습니다.
도움이 필요합니다. 감사합니다. 감사합니다
참조 솔루션
방법 1:
MouseLeave event works, the panel hides immediately once it leaves the panel.
Private Sub Panel1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Panel1.MouseLeave
Panel1.Visible = False
End Sub