[英]Need To Close A Panel When Clicked Outside (Lost Focus)
我有一个我似乎无法克服的问题。
在我的应用程序中,我有一个自定义类,可在启动时将表单加载到面板中。 然后,当我单击主表单上的按钮时,该面板将显示为可见,向用户显示该表单。
我的问题是,当用户在面板外部单击时(回到主窗体上),我希望能够隐藏该面板。
到目前为止,我已经尝试过Form_Deactivate
, Form_Leave
, Form_LostFocus
, Panel_Leave
和Panel_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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.