Vb.net 单击外部时需要关闭面板(失去焦点)
我有一个似乎无法克服的问题 在我的应用程序中,我有一个自定义类,它在启动时将表单加载到面板中。然后,当我单击主窗体上的按钮时,我会将面板显示为可见,向用户显示窗体 我的问题是,当用户在面板外单击(返回到主窗体)时,我希望能够隐藏面板 到目前为止,我已经尝试了Vb.net 单击外部时需要关闭面板(失去焦点),vb.net,focus,panel,Vb.net,Focus,Panel,我有一个似乎无法克服的问题 在我的应用程序中,我有一个自定义类,它在启动时将表单加载到面板中。然后,当我单击主窗体上的按钮时,我会将面板显示为可见,向用户显示窗体 我的问题是,当用户在面板外单击(返回到主窗体)时,我希望能够隐藏面板 到目前为止,我已经尝试了Form\u Deactivate、Form\u Leave、Form\u LostFocus、Panel\u LostFocus事件,但似乎没有任何事件会始终如一地触发事件来隐藏面板。唯一有效的方法是,一旦表单可见,用户在表单内部(在lis
Form\u Deactivate
、Form\u Leave
、Form\u LostFocus
、Panel\u LostFocus
事件,但似乎没有任何事件会始终如一地触发事件来隐藏面板。唯一有效的方法是,一旦表单可见,用户在表单内部(在listview控件上)单击,然后在表单外部单击
无论用户是否单击表单,我是否可以确保每次调用此事件
到目前为止,我的代码看起来像:
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,但是,我找不到解决这个问题的方法。也许这与我如何打开表单/面板有关,但有人建议我使用类打开表单,这样我就可以通过外部调用对表单中的控件进行更多控制
谢谢你的帮助。感谢MouseLeave事件起作用,面板离开面板后立即隐藏
Private Sub Panel1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Panel1.MouseLeave
Panel1.Visible = False
End Sub
谢谢Sabre,但我仍然需要在表单内部单击它来注册鼠标删除事件。而且,它似乎不是每次都发射,这很可能与面板中嵌入的一个窗体有关;类似这样的问题似乎会定期出现。在这种情况下,由于frmUsers或多或少是一个美化的控件,因此可以以包含该控件的形式创建并添加它。然后,您可以尝试隐藏面板作为frm.Deactivate事件的结果。