PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [VB.net] NotifyIcon Hilfe



jojox
01.08.2009, 01:14
Hi leute,
ich hab jetzt mal ein Tray butten gemacht funktioniert auch alles. hab da dann ein kontextmenü angefügt.
jetzt is aber meine frage wie les ich das kontextmenü vom tray aus?



Private Sub hide1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles hide1.Click
ContextMenuHide.MenuItems.Add("Show")
ContextMenuHide.MenuItems.Add("Play")
ContextMenuHide.MenuItems.Add("Pause")
ContextMenuHide.MenuItems.Add("Stop")
ContextMenuHide.MenuItems.Add("Exit")

Me.ShowInTaskbar = True
Me.NotifyIcon1.Visible = True
Me.Hide()
Me.NotifyIcon1.ContextMenu = ContextMenuHide
End Sub


Hoffe mal ihr könnt mir helfen
danke im vorraus
MFG
jojox

phil333
01.08.2009, 01:31
http://msdn.microsoft.com/de-de/library/1z23t178.aspx Wenn du das so machst wird es jedesmal angezeigt, wenn du mit der Maus drübergehst ;-)

jojox
01.08.2009, 01:46
wie ich es erstel is mir klar aber ich versteh nciht ganz wie ich das auslesen sol also wenn ich dann Exit drück wie muss ich das machen das dan "End" ausgeführt wird?

Kaspersky
01.08.2009, 10:59
Füg die items in der IDE hinzu und nicht in der laufzeit.
Dann kannst du ganz einfach auf die context items doppelklicken für das click event.

jojox
01.08.2009, 11:22
kannst du genau erkläre was du meinst versteh das nciht ganz.
und wie kan ich auslesen was angeklicktwurde?
NotifyIcon1.ContextMenu.xxxxxxx?oder geht das so nicht?

Sirect
01.08.2009, 11:26
Füg die items in der IDE hinzu und nicht in der laufzeit.

Ist aber ansonsten immer schlauer das in der Laufzeit zu machen.
Wenn man den Tray nicht nutzt muss man auch nicht den Speicher belasten. Du kannst per "Handles" auch Events zuweisen wenn die Objekte zur Laufzeit deklariert werden.

magerquark
01.08.2009, 11:46
2 Optionen:
Die Items per "Withevents" deklarieren, dann hast du zu jedem Item dein Klick event.
Oder die Per Addhandler das Clickevent zu jedem Item hinzufügen.

jojox
01.08.2009, 11:54
was wären jetz die einfachste art?

magerquark
01.08.2009, 13:40
Ist Geschmackssache, hab dir mal jeweils ein Beispiel gemacht:
Addhandler:


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim ContextMenuHide As New ContextMenuStrip
Dim Item1 As New ToolStripMenuItem
Item1.Text = "Beenden"
ContextMenuHide.Items.Add(Item1)
AddHandler Item1.Click, AddressOf Item1_Click


Me.WindowState = FormWindowState.Minimized
Me.ShowInTaskbar = False
Me.NotifyIcon1.Visible = True
NotifyIcon1.Icon = Me.Icon
Me.NotifyIcon1.ContextMenuStrip = ContextMenuHide
End Sub
Private Sub Item1_Click()
Me.Close()
End Sub

Withevents


WithEvents Item1 As New ToolStripMenuItem
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim ContextMenuHide As New ContextMenuStrip
Item1.Text = "Beenden"
ContextMenuHide.Items.Add(Item1)

Me.WindowState = FormWindowState.Minimized
Me.ShowInTaskbar = False
Me.NotifyIcon1.Visible = True
NotifyIcon1.Icon = Me.Icon
Me.NotifyIcon1.ContextMenuStrip = ContextMenuHide
End Sub
Private Sub Item1_Click() Handles Item1.Click
Me.Close()
End Sub

Das Withevents hat den Vorteil, das direkt alle Events vorhanden sind. Bei Addhandler musst du das ganze für jedes Event machen, dass du brauchst.

jojox
02.08.2009, 12:15
vielen dnak habs mit Withevent gemacht hat prima geklapt dank deinem Bsp