[VB.NET] Submenu item toevoegen aan systray menu

Pagina: 1
Acties:

  • Arethusa
  • Registratie: December 2003
  • Laatst online: 13-02 13:48

Arethusa

Niet die server

Topicstarter
Ik zit momenteel met een lastig stukje vb.net code waar ik graag wat hulp bij zou willen. Via onderstaande code
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Module modMain
    Private WithEvents SysTray As NotifyIcon
    Private WithEvents SysTrayMenu As ContextMenuStrip
    Private handlerSysTrayMenuItemClicked As New ToolStripItemClickedEventHandler(AddressOf SysTrayMenu_Click)

    Const mnuAbout = "&About..."
    Const mnuPrint = "&Print..."
    Const mnuExit = "E&xit"
    Const mnuPrintWeigher1 = "Print Weigher 1"
    Const mnuPrintWeigher2 = "Print Weigher 2"

    Sub Main()
        Dim mnuSep As ToolStripSeparator

        SysTray = New NotifyIcon

        SysTrayMenu = New ContextMenuStrip()

        mnuSep = New ToolStripSeparator()
        mnuSep.Name = "sep"

        With SysTrayMenu
            .Items.Add(mnuPrint)
            .Items.Add(mnuSep)
            .Items.Add(mnuAbout)
            .Items.Add(mnuExit)
        End With

        With SysTray
            .Text = "Weigher Calculator"
            .ContextMenuStrip = SysTrayMenu
            .Icon = New Icon("Ico.ico")
            .Visible = True
        End With

        Application.Run()

    End Sub


Maak ik een sub() die zich tijdens het opstarten nest in het system tray menu in windows. Dat werkt prima. Het menu word netjes opgebouwd. Alleen wil ik nu de constanten mnuPrintWeigher1, en mnuPrintWeigher2 koppelen aan het menuitem Print. M.a.w als je Print selecteert moet je een uitschuif menuutje krijgen met daarin Weigher 1 en Weigher 2.


Een paar uur googlen en verschillende msdn bronnen raadplegen over contextmenustrip, contextmenu of system tray levert niets bruikbaars of. Kan iemand me een tip geven waar ik naar kijken moet?

I've been mad for fucking years, absolutely years, been over the edge for yonks.
Vinyl: Discogs


  • R.A.
  • Registratie: Januari 2004
  • Niet online
Als je het object MenuItem gebruikt kan je meer dingen doen, want op het moment kan je ook niet de click events afvangen per menuitem.

code:
1
2
3
4
Private WithEvents mnuShowMain As New MenuItem("Main")

cmMenu.MenuItems.Add(mnuShowMain)
SysIcon.ContextMenu = cmMenu


enfin je kan weer verder zoeken :P

  • Arethusa
  • Registratie: December 2003
  • Laatst online: 13-02 13:48

Arethusa

Niet die server

Topicstarter
Ik zal je code even onder handen nemen, bedankt.
Ik gebruik naast bovenstaande code onderstaande code om een formulier te openen. Deze moet naar mijn idee ook gewijzigd worden om met het juiste item de juiste form te openen:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    Sub SysTrayMenu_Click(ByVal sender As Object, ByVal e As ToolStripItemClickedEventArgs) Handles SysTrayMenu.ItemClicked
        Select Case e.ClickedItem.Text

            Case mnuPrint
                With frmPrint
                    .Show()
                End With

            Case mnuAbout
                With frmAbout
                    .Show()
                End With

            Case mnuExit
                SysTray.Visible = False
                Application.ExitThread()
        End Select

    End Sub

I've been mad for fucking years, absolutely years, been over the edge for yonks.
Vinyl: Discogs


  • CyBoB
  • Registratie: Januari 2001
  • Laatst online: 24-12-2025

CyBoB

.::BURB::.

Het is niet zo moeilijk alleen even leren zoeken op de msdn. hier wat linkjes:

http://msdn.microsoft.com
http://msdn2.microsoft.co...tripmenuitem_members.aspx < ToolStripMenuItem

http://msdn2.microsoft.co...rms.contextmenustrip.aspx < ContextMenuStrip

waar het op neer komt is:

code:
1
2
3
4
5
6
ContextMenuStrip.Items
            |__ToolStripMenuItem
            |__ToolStripMenuItem.DropDownItems
                                   |_ToolStripMenuItem.DropDownItems
                                                               |_ToolStripMenuItem
                                                               |_ToolStripMenuItem


hoop dat je de hint zo een beetje snapt.

  • R.A.
  • Registratie: Januari 2004
  • Niet online
Dat kan nu door middel van:

Visual Basic .NET:
1
2
3
   Private Sub mnuShowMain_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles mnuShowMain.Click
      frmMain.Show()
   End Sub


Staat wat netter en overzichtelijker wanneer er meer code komt bij die event.

  • Arethusa
  • Registratie: December 2003
  • Laatst online: 13-02 13:48

Arethusa

Niet die server

Topicstarter
CyBoB schreef op donderdag 20 juli 2006 @ 09:37:
Het is niet zo moeilijk alleen even leren zoeken op de msdn. hier wat linkjes:

http://msdn.microsoft.com
http://msdn2.microsoft.co...tripmenuitem_members.aspx < ToolStripMenuItem

http://msdn2.microsoft.co...rms.contextmenustrip.aspx < ContextMenuStrip

waar het op neer komt is:

code:
1
2
3
4
5
6
ContextMenuStrip.Items
            |__ToolStripMenuItem
            |__ToolStripMenuItem.DropDownItems
                                   |_ToolStripMenuItem.DropDownItems
                                                               |_ToolStripMenuItem
                                                               |_ToolStripMenuItem


hoop dat je de hint zo een beetje snapt.
Bedankt voor je hulp ik ben een tijdje ziek geweest en heb niet eerder kunnen reageren. Het geheel is me duidelijk. Tenminste de schets is me duidelijk. De vertaling naar code is wat lastiger voor me. Normaliter zou bovenstaand prima via de designer in vb.net kunnen doen maar in mijn geval programmeer ik puur de code en doe ik in dat gedeelte van de applicatie niets met formulieren. Dit maakt het er niet makkelijker op. Waarschijnlijk is het erg makkelijk als je het eenmaal ziet maar is het misschien mogelijk om een klein code voorbeeld te posten zodat ik eindelijk het licht kan zien? Momenteel heb ik een klein simpel menuutje draaien die vanuit de tasktray aanroepbaar is wat op zich werkt. Ik zou alleen graag een uitschuifbaar menuutje willen aangezien me dit wat mooier en functioneler lijkt.

I've been mad for fucking years, absolutely years, been over the edge for yonks.
Vinyl: Discogs

Pagina: 1