Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Context-Menu an NotifyIcon funzt net
Bewareofthis
myCSharp.de - Member



Dabei seit:
Beiträge: 59

Themenstarter:

Context-Menu an NotifyIcon funzt net

beantworten | zitieren | melden

Hallo zusammen,
dasContextMenu wurde zur Entwicklungszeit angelegt, aber die "SubItems" eines MenuItems werden zur Laufzeit dynamisch generiert. Dazu wird ein ListView ausgelesen, dessen Items in das MainMenu kopiert (genauso generiert wie das ContextMenu) und der Inhalt des MainMenu Items in das ContextMenu MenuItem geclont(CloneMenu()).

Das ganze funkt. soweit gut, die zur Laufzeit hinzugefuegten ListViewItems werden im MainMenu korrekt angezeigt, allerdings im ContextMenu nur beim "ersten öffnen", danach sind die SubItems weg. Ist im ListView nur ein Item vorhanden zeigt es das ContextMenu auch wieder an! ?(

Habe das selbe ContextMenu an das ListView gebunden und siehe das es funzt!
Muss man was beachten wenn man ein ContextMenu an ein NotifyIcon bindet?

Thx vorab

Bewareofthis
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Bewareofthis,

wenn Dein Problem noch besteht, dann poste doch mal Code (möglichst kurz und nur die problematischen Stellen, aber ohne Änderungen direkt compilierbar). Ich würde dann mal schauen.

herbivore
private Nachricht | Beiträge des Benutzers
Bewareofthis
myCSharp.de - Member



Dabei seit:
Beiträge: 59

Themenstarter:

beantworten | zitieren | melden

Danke hatt sich erledig. Das ContextMenu muss komplett zur Laufzeit generiert werden
private Nachricht | Beiträge des Benutzers
Bewareofthis
myCSharp.de - Member



Dabei seit:
Beiträge: 59

Themenstarter:

beantworten | zitieren | melden

Hallo,
hab jetzt ein neues Problem:

Ich zeichne nun die MenuItems des MainMenu´s bzw. ContextMenu´s via OwnerDraw selbst. Wieder funktioniert es beim MainMenu einwandfrei, dagegen beim ContextMenu nicht. Das DrawItemEvent bzw. das MeasureItemEvent werden nie ausgeführt. Bindet man das ContextMenu an das ListView (siehe 1. Post) werden die Event´s ausgeführt.


private ContextMenu myCM =new ContextMenu();
notifyIcon1.ContextMenu=myCM;
myCM.Popup+=new EventHandler(myCM_Popup);
private void myCM_Popup(object sender, EventArgs e)
		{
			myCM.MenuItems.Add("test");
			myCM.MenuItems[0].OwnerDraw=true;
			myCM.MenuItems[0].MeasureItem +=new MeasureItemEventHandler(Form1_MeasureItem);
			myCM.MenuItems[0].DrawItem +=new DrawItemEventHandler(Form1_DrawItem);
		}

		private void Form1_MeasureItem(object sender, MeasureItemEventArgs e)
		{
			
		}

		private void Form1_DrawItem(object sender, DrawItemEventArgs e)
		{
			
		}

Gilt das OwnerDraw für das ans NotifyIcon gebundene ContextMenu nicht???

MfG

Bewareofthis
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Bewareofthis,

auf jeden Fall wird das Kontextmenü eines NotifyIcons etwas anders behandelt. Einen kleinen, wenn auch nicht vollständigen Einblick gibt: ContextMenu bei Linksklick auf NotifyIcon anzeigen (ich hatte mir ShowContextMenu mit Lutz Röders Refelector angeschaut).

herbivore
private Nachricht | Beiträge des Benutzers
Bewareofthis
myCSharp.de - Member



Dabei seit:
Beiträge: 59

Themenstarter:

beantworten | zitieren | melden

War ja wieder mal klar --> hier die Lösung

Könnte vielleicht mal jemand testen obs mit dem FW 2.0 geht??

Thx vorab

Bewareofthis
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Bewareofthis,

ich habe es mit .NET 2.0 probiert. Dort werden die EventHandler für MeasureItem und DrawItem aufgerufen. Ob das Zeichnen selbst geht, habe ich nicht probiert, sollte dann wohl aber.

herbivore
private Nachricht | Beiträge des Benutzers
Bewareofthis
myCSharp.de - Member



Dabei seit:
Beiträge: 59

Themenstarter:

beantworten | zitieren | melden

Thx Herbivore,

ist der FW2.0 noch beta oder kann man den schon getrost einsetzen ?

Gruß

Bewareofthis
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Bewareofthis,

beides! :-)

Für unternehmenskritische Anwendungen würde ich es nicht nehmen, und für welche mit großem Schadenspotential, aber sonst kann man 2.0 m.E. schon einsetzen, insbesondere, wenn man (fast) nur 1.1 Klassen/Methoden verwendet.

herbivore
private Nachricht | Beiträge des Benutzers
S.H.-Teichhof
myCSharp.de - Member

Avatar #avatar-2460.jpg


Dabei seit:
Beiträge: 1552
Herkunft: Sindringen

beantworten | zitieren | melden

Zitat
Für unternehmenskritische Anwendungen würde ich es nicht nehmen, und für welche mit großem Schadenspotential, aber sonst kann man 2.0 m.E. schon einsetzen, insbesondere, wenn man (fast) nur 1.1 Klassen/Methoden verwendet.
Ich dacht das man 2.0 erst einsetzten darf wenn die Beta fase vorbei ist.
Jedenfals habe ich das Hier im Forum irgendwo schon mal gelesen
Wir Arbeiten eigendlich nicht wir nehmen nur das geld
private Nachricht | Beiträge des Benutzers
VizOne
myCSharp.de - Member

Avatar #avatar-1563.gif


Dabei seit:
Beiträge: 1551

beantworten | zitieren | melden

Naja, in der EULA steht so wie ich das sehe lediglich, dass die Weitergabe von mit der Beta/CTP erstellten Produkten nicht gestattet ist. Ich weiß nicht, ob damit auch gemeint ist, dass die Produkte nicht in der Produktion eingesetzt werden dürfen. Übrigens soll die Beta2 bereits eine Go-Live-Lizenz besitzen, d.h. man wird mit der Beta 2 erstellte Sachen ganz normal weitergeben.

MfG VizOne
private Nachricht | Beiträge des Benutzers