我有一个我似乎无法克服的问题。
在我的应用程序中,我有一个自定义类,可以在启动时将表单加载到面板中。然后,当我单击主窗体上的按钮时,我将面板显示为可见,向用户显示该窗体。
我的问题是,当用户点击面板(返回主窗体)时,我希望能够隐藏面板。
到目前为止,我已经尝试了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
向用户显示
我似乎无法关闭它。我知道Panels不能正确支持LostFocus,但是,我无法找到它。也许它与我打开表单/面板的方式有关但我被建议使用类打开表单,这样我就可以通过外部调用更好地控制表单中的控件。
任何帮助表示赞赏。感谢
答案 0 :(得分:0)
MouseLeave事件有效,面板离开面板后立即隐藏。
Private Sub Panel1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Panel1.MouseLeave
Panel1.Visible = False
End Sub