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

エンドクラス

編集:これはMenuStripオブジェクトであるため、「ActiveForm」はクラスに対して定義されていません。このオブジェクトをフォームに配置したときに、このクラスを介して現在のフォームにアクセスする方法がわかりません。コードの下部で、自分がやろうとしていたことをコメントアウトしました。混乱させて申し訳ありません。

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 に答える