2012-11-04 32 views
1

以下代碼用於自定義菜單條。我想弄清楚如何訪問當前的開放表單,以便我可以關閉它。我基本上試圖做的是運行「ActiveForm.Close()」,當用戶點擊導航到一個新的表單,從當前的一個。vb.net通過自定義對象訪問當前表單?

感謝您的幫助!

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對象。當我把這個對象放在一個表單上時,我不確定如何通過這個類訪問當前表單。我在代碼底部註釋了我正在嘗試做什麼。抱歉混淆。

+0

問題是什麼?有錯誤嗎? –

+0

'ActiveForm'沒有爲類定義,我不確定如何訪問當前表單。如果你看到底部,我評論了我正在嘗試做的事情。抱歉混淆。 – Meowbits

回答

1

你可以設置你的MenuStripCustom類點擊文件/退出時引發一個事件。你的表單需要一個事件處理程序來處理該事件,它可以關閉它自己。

在MenuStripCustom:

Public event ExitClicked 

在NavExit_Click:

RaiseEvent ExitClicked 

在您的形式:

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

希望你越來越接近得到它的所有工作。

+0

謝謝,我正在慢慢前進。我嘗試了你的代碼,但是我得到一個錯誤'Handles子句需要一個WithEvents變量在包含類型或它的一個基類型中定義。'現在我可能會與其他答案一起去。我欣賞它雖然幫助;) – Meowbits

+0

奇怪,應該工作。去與Form.ActiveForm - 它更簡單。 – sj1900