繁体   English   中英

在外部单击时需要关闭面板(失去焦点)

[英]Need To Close A Panel When Clicked Outside (Lost Focus)

我有一个我似乎无法克服的问题。

在我的应用程序中,我有一个自定义类,可在启动时将表单加载到面板中。 然后,当我单击主表单上的按钮时,该面板将显示为可见,向用户显示该表单。

我的问题是,当用户在面板外部单击时(回到主窗体上),我希望能够隐藏该面板。

到目前为止,我已经尝试过Form_DeactivateForm_LeaveForm_LostFocusPanel_LeavePanel_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM