1

下面的代码用于自定义菜单条。我正在尝试弄清楚如何访问当前打开的表单,以便我可以将其关闭。我基本上要做的是在用户单击以从当前表单导航到新表单时运行“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 对象。当我将此对象放在表单上时,我不确定如何通过此类访问当前表单。我在代码底部注释掉了我想要做的事情。很抱歉造成混乱。

4

2 回答 2

2

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

Form.ActiveForm

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

于 2012-11-04T10:53:05.443 回答
1

您可以设置 MenuStripCustom 类以在单击文件/退出时引发事件。您的表单将需要一个事件处理程序来处理它可以自行关闭的事件。

在 MenuStripCustom 中:

Public event ExitClicked

在 NavExit_Click 中:

RaiseEvent ExitClicked

在您的表格中:

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

希望你越来越接近让这一切正常工作。

于 2012-11-04T11:00:00.240 回答