vb.net通过自定义对象访问当前表单?

时间:2012-11-04 10:41:13

标签: vb.net

以下代码适用于自定义菜单条。我试图弄清楚如何访问当前打开的表单,以便我可以将其关闭。我基本上尝试做的是当用户点击导航到当前的新表单时运行“ActiveForm.Close()”。

感谢您的帮助!

Public Class MenuStripCustom
    Inherits MenuStrip

Private WithEvents NavToolStrip As New ToolStripMenuItem("File")
Private WithEvents NavMainMenu As New ToolStripMenuItem("Main Menu")
Private WithEvents NavSignOut As New ToolStripMenuItem("Sign Out")
Private WithEvents NavExit As New ToolStripMenuItem("Exit")

Sub New()
    Me.Items.Add(NavToolStrip)
    NavToolStrip.DropDownItems.Add(NavMainMenu)
    NavToolStrip.DropDownItems.Add(NavSignOut)
    NavToolStrip.DropDownItems.Add(NavExit)
End Sub


' All forms
Private Sub NavExit_Click(sender As Object, e As EventArgs) Handles NavExit.Click
    Application.Exit()
End Sub

Private Sub NavMainMenu_Click(sender As Object, e As EventArgs) Handles NavMainMenu.Click
    'MainMenu.visible = true
    'ActiveForm.Close()
End Sub

结束班

编辑:没有为类定义'ActiveForm',因为这是一个MenuStrip对象。当我把这个对象放在一个表单上时,我不确定如何通过这个类访问当前表单。我在代码的底部注释了我想要做的事情。抱歉混淆。

2 个答案:

答案 0 :(得分:2)

您可以使用以下静态属性访问活动表单:

Form.ActiveForm

http://msdn.microsoft.com/en-us/library/system.windows.forms.form.activeform.aspx

答案 1 :(得分:1)

单击“文件/退出”时,可以设置MenuStripCustom类以引发事件。您的表单将需要一个事件处理程序,用于该事件可以自行关闭。

在MenuStripCustom中:

Public event ExitClicked

在NavExit_Click中:

RaiseEvent ExitClicked

以您的形式:

Sub Exit() handles MyMenuStripCustomInstance.ExitClicked
    me.close
End Sub

希望你越来越接近让它全部工作了。