2012-10-31 85 views
1

我想要做的是製作一個自定義的MenuStrip控件與幾個項目(主菜單,註銷,退出等...)已附加。將會有方法來處理被點擊的物品。我認爲從長遠來看,這會爲我節省一些冗餘代碼,我也可能會學到一些東西。VB.net - 從MenuStrip派生的類

最終產品基本上是一個自定義的MenuStrip控件,我可以將它放在窗體上,並且已經具有其中項目的功能。

所以我的問題是,這可以做到嗎?我是一個新手,但如果能夠完成並且實際上是一個好主意,那麼我想給它一個機會。

錯誤比比皆是,但是這是我在想什麼......

Public Class MenuStripCustom 
    Inherits MenuStrip 

    Add MenuItem(MainMenuToolStripMenuItem) 
    MainMenuToolStripMenuItem.Text = Main Menu 

     Protected Sub MainMenuNav(e As System.EventArgs) _ 
      Handles MyBase.MainMenuToolStripMenuItem.Click 
     MainMenu.Visible = True 
     Me.Close() 
    End Sub 

End Class 

謝謝!

+1

如果我不完全錯誤,你只能做你正在說的話。創建一個派生自MenuStrip的類,在加載階段添加菜單項,將onclick事件分配給您想要的任何函數。但是,請認識到您可以正確使用的唯一項目是Exit。所有其他的將被編程具體和整個這一點已經消失。我的2美分,堅持一個正常的菜單,設置它,而不是複製它。 – WozzeC

+0

你可能對程序特定,但仍然想要一試。你知道如何解決代碼塊中的一些錯誤嗎?我不是很熟悉vb.net – Meowbits

+1

@Meowbits - 如果你不告訴我們它們是什麼,我們不能幫你解決錯誤!但是,我看到的一個問題是,您正在呼叫Me.Close。在這種情況下,我指的是MenuStrip,我不認爲MenuStrip具有Close方法。 –

回答

3

是的,可以做到沒有問題。只需創建一個新的用戶控件,並使其從MenuStrip繼承。然後爲名爲「UserControl1」的用戶控件輸入類似於下面的代碼。

Public Class UserControl1 
    Inherits MenuStrip 

    Private WithEvents NavToolStrip As New ToolStripMenuItem("Nav") 

    Sub New() 

     ' This call is required by the designer. 
     InitializeComponent() 

     ' Add any initialization after the InitializeComponent() call. 
     Dim tsi As New ToolStripMenuItem 
     Me.Items.Add(NavToolStrip) 
    End Sub 

    Private Sub NavToolStrip_Click(sender As Object, e As EventArgs) Handles NavToolStrip.Click 
     MsgBox("Nav clicked") 
    End Sub 
End Class 

編譯代碼,然後您將能夠將「UserControl1」從您的工具箱拖到您的窗體上。

+0

謝謝!現在我正在努力控制已添加到ToolStrip的項目。對不起,要求勺子喂... – Meowbits

+0

我很高興地幫助,只是不知道你的意思是我的「控制項目」。你能詳細說明嗎? – sj1900

+0

只需將一些註釋放入其他線程中即可 - http://stackoverflow.com/questions/13216590/toolstripdropdownitem-how-to-use-correctly-vb-net/13217147#13217147。我認爲那是你以後的樣子。 – sj1900