webForumDet fria alternativet

foreach på objekt i submeny

.NET

5 svar · 277 visningar · startad av Gein

Medlem sedan sep. 20005 700 inlägg
Frågan#1

Jag kodar i C# och skulle vilja lista alla menyer som jag har liggandes i en submeny (contextMenu). Antalet är okänt, därav min önskan på en foreach.
Har testat med

foreach(MenuItem item in menuItem1.MenuItems[2])

men då klagar den och säger att foreach inte går att operera på varibeln då den inte innehåller någon definition för GetEnumerator eller att den är oåtkomlig.

Medlem sedan apr. 20012 266 inlägg
#2

är MenuItems är en Collection?

Medlem sedan sep. 20005 700 inlägg
#3

Nja, jag hade visst missat. Det ska stå

foreach(MenuItem item in menuItem1.MenuItems[2].MenuItems

Mycket menu och item där ;)

Medlem sedan sep. 20005 700 inlägg
#4

Jag har däremot ytterliggare problem med dynamiska menyer så jag tar det här i samma tråd så får vi se...

Jag har en submeny som jag vill lägga till och ta bort element ur, dynamiskt. När programmet laddas så läggs ett antal element in i submenyn. Sedan kan jag köra en rutin som tar bort ett element och lägger till ett annat (eller enbart lägger till ännu ett element). Men efter att denna rutin har körts så kommer jag inte åt submenyn längre. Den finns kvar och menyn har en pil åt höger som avslöjar att den har element under sig men ingen submeny öppnas upp. Om jag anropar en annan temporär rutin som skriver ut alla element i submenyn så stämmer det överens med vad som borde finnas där. Det vill säga menyn verkar innehålla rätt element men dom vägrar synas.
Nåon idé varför den uppför sej så?

Medlem sedan sep. 20005 700 inlägg
#5

Kan fortsätta med mer information. Om jag kopplar contextMenu:n till formen (dvs att den poppar upp om jag högerklickar på formen så fungerar det som det ska). Menyn uppdaterar sej och allt är glatt på jorden. Men när den är kopplad till en notifyIcon som jag har nere i system tray så uppdateras inte menyn korrekt och uppför sej som beskrivet i ovanstående inlägg.

Medlem sedan sep. 20005 700 inlägg
#6

En lösning verkar vara att skapa en contextmeny från scratch med ren kod varje gång man högerklickar på ikonen i system tray.

Hur fungerar den lösningen ur prestandasynpunkt?

258 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
116 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)