在外面点击时需要关闭面板(丢失焦点)

时间:2014-09-01 03:00:02

标签: vb.net focus panel

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

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

我的问题是,当用户点击面板(返回主窗体)时,我希望能够隐藏面板。

到目前为止,我已经尝试了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向用户显示

我似乎无法关闭它。我知道Panels不能正确支持LostFocus,但是,我无法找到它。也许它与我打开表单/面板的方式有关但我被建议使用类打开表单,这样我就可以通过外部调用更好地控制表单中的控件。

任何帮助表示赞赏。感谢

1 个答案:

答案 0 :(得分:0)

MouseLeave事件有效,面板离开面板后立即隐藏。

Private Sub Panel1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Panel1.MouseLeave
    Panel1.Visible = False
End Sub