Adding Tool Strip Buttons dynamically

MacRaider4

Member
Joined
Jan 8, 2010
Messages
13
Programming Experience
Beginner
My boss likes to do things the hard way so this is the problem I have. I need to be able to add buttons to a tool strip at run time. As of now I've been able to get the buttons to display with a nice little picture just how he wants and some text under it. Just can't figure out how to "enable" the click event for these buttons. Obviously I need them to do something rather than just sit there looking good and this is where I'm stuck. Right now I'd be happy for a message box to come up saying yep I'm working as I could then work with that. So any ideas would be greatly appreciated.
This is what I have for code so far... this is just to get it working I'll work on the actual code later.
VB.NET:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim btnSomething As New ToolStripButton

        btnSomething.Text = "Test 1"
        btnSomething.Image = Image.FromFile("F:\VisualBasic\ToolStripTest\images\eventlog.ico")
        btnSomething.TextImageRelation = TextImageRelation.ImageAboveText
        btnSomething.ToolTipText = "This is Just a Test"

        Dim btnSomething2 As New ToolStripButton
        btnSomething2.Text = "Test 2"
        btnSomething2.Image = Image.FromFile("F:\VisualBasic\ToolStripTest\images\eventlog.ico")
        btnSomething2.TextImageRelation = TextImageRelation.ImageAboveText
        btnSomething2.ToolTipText = "This is Just a Test again"

        ToolStrip1.Items.Add(New System.Windows.Forms.ToolStripSeparator)
        ToolStrip1.Items.Add(btnSomething)
        ToolStrip1.Items.Add(btnSomething2)
        ToolStrip1.Items.Add(New System.Windows.Forms.ToolStripSeparator)
        'ToolStrip1.Items.Add("Test", Image.FromFile("F:\VisualBasic\ToolStripTest\images\eventlog.ico"))

    End Sub

Thank you in advance...
 
Ok so I've gotten it working, kinda.

VB.NET:
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim btnSomething As New ToolStripButton
        btnSomething.Text = "Test 1"
        btnSomething.Image = Image.FromFile("F:\VisualBasic\ToolStripTest\images\eventlog.ico")
        btnSomething.TextImageRelation = TextImageRelation.ImageAboveText
        btnSomething.ToolTipText = "This is Just a Test"
        AddHandler btnSomething.Click, AddressOf btnSomething_Click

        'Dim btnSomething2 As New ToolStripButton
        'btnSomething2.Text = "Test 2"
        'btnSomething2.Image = Image.FromFile("F:\VisualBasic\ToolStripTest\images\eventlog.ico")
        'btnSomething2.TextImageRelation = TextImageRelation.ImageAboveText
        'btnSomething2.ToolTipText = "This is Just a Test again"
        'AddHandler btnSomething2.Click, AddressOf btnSomething2_Click

        ToolStrip1.Items.Add(New System.Windows.Forms.ToolStripSeparator)
        ToolStrip1.Items.Add(btnSomething)
        ToolStrip1.Items.Add(Call Buttons(btnSomething2))
        ToolStrip1.Items.Add(New System.Windows.Forms.ToolStripSeparator)
        'ToolStrip1.Items.Add("Test", Image.FromFile("F:\VisualBasic\ToolStripTest\images\eventlog.ico"))

    End Sub

    Private Sub btnSomething_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

        MsgBox(CType(sender, ToolStripButton).ToolTipText & ", " & CType(sender, ToolStripButton).Text)

    End Sub

So that does work, now what I'm trying to do is move the "Buttons" to a module so different forms can call it. I tried using a call statement but that's not working.
ToolStrip1.Items.Add(Call Buttons(btnSomething2))
Any ideas? I'm getting Expression Expected where the word Call is.
The name of the Sub in the Module is "Buttons", figured I'd keep it simple. Hoping to use a variable eventually as part of the call so it will be "smarter".
 
I would think there are a couple of approaches

1. If you just need to define the buttons only in the module

VB.NET:
 Public Function TS1() As ToolStripButton
        Dim vTS1 As New ToolStripButton
        With vTS1
            .Image = My.Resources.DB_Update
            .ToolTipText = "Update this DB"
        End With
        Return vTS1
    End Function

The add to the toolStrip wherever

VB.NET:
Dim vToolStrip as new ToolStrip
Dim vButton as ToolStripButton = TS!
vToolStrip.Items.Add(vButton)
AddHandler vButton.click, Addressof Someaction

Or you can define a full toolstrip and call it onto the form

This is one I prepared earlier :)

VB.NET:
Public Function ReturnDataGridTopToolBar() As ToolStrip
        DataGridToolStrip = New ToolStrip
        DataGridToolStrip.ImageScalingSize = New Point(32, 32)
        ToolStripDelete = New ToolStripButton
        ToolStripDelete.Image = My.Resources.DB_Delete
        ToolStripDelete.ToolTipText = "Delete Selected Record"
        DataGridToolStrip.Items.Add(ToolStripDelete)
        ToolStripSave = New ToolStripButton
        ToolStripSave.Image = My.Resources.DB_Insert
        DataGridToolStrip.Items.Add(ToolStripSave)
        ToolStripSave.ToolTipText = "Add New Record"
        ToolStripUpdate = New ToolStripButton
        ToolStripUpdate.Image = My.Resources.DB_Update
        DataGridToolStrip.Items.Add(ToolStripUpdate)
        ToolStripUpdate.ToolTipText = "View or Edit the Record!"
        TabsMaxRecords = New ToolStripTextBox
        TabsMaxRecords.Text = My.Settings.MaxRecordsReturned
        TabsMaxRecords.Size = New Point(80, 20)
        TabsMaxRecords.ToolTipText = "Enter the max. number of records to be returned"
        DataGridToolStrip.Items.Add(TabsMaxRecords)
        TabsSearchText = New ToolStripTextBox
        TabsSearchText.Size = New Point(150, 20)
        TabsSearchText.Text = ""
        TabsSearchText.ToolTipText = "Enter a search phrase"
        DataGridToolStrip.Items.Add(TabsSearchText)
        ToolStripSearchButton = New ToolStripButton
        ToolStripSearchButton.Image = My.Resources.Search
        ToolStripSearchButton.ToolTipText = "Click to return searched items - leave blank to return all records"
        DataGridToolStrip.Items.Add(ToolStripSearchButton)
        ToolStripPrint = New ToolStripButton
        ToolStripPrint.Image = My.Resources.Print
        AddHandler ToolStripPrint.Click, AddressOf Print_ClickDG
        ToolStripPrint.ToolTipText = "Print Data"
        DataGridToolStrip.Items.Add(ToolStripPrint)
        ToolStripExcelButton = New ToolStripButton
        ToolStripExcelButton.Image = My.Resources.Excel
        ToolStripExcelButton.ToolTipText = "Export to Excel - Caution: Still being tested"
        AddHandler ToolStripExcelButton.Click, AddressOf ExportToExcel_Click
        DataGridToolStrip.Items.Add(ToolStripExcelButton)
        ToolStripExcelFullButton = New ToolStripButton

        ToolStripExcelFullButton.Image = My.Resources.Excel_Full_Record
        DataGridToolStrip.Items.Add(ToolStripExcelFullButton)

        Return DataGridToolStrip
    End Function
 
Ok I'll give that a shot, and see how it works. No big rush on this project so it's nice to be able to try a bunch of different ideas. Thank you!
 
Back
Top