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
[gelöst] MenuStrip Items auf visible setzen mit Hilfe eines Querys
|SmEaGoL|
myCSharp.de - Member



Dabei seit:
Beiträge: 24
Herkunft: Luxemburg

Themenstarter:

[gelöst] MenuStrip Items auf visible setzen mit Hilfe eines Querys

beantworten | zitieren | melden

Hallo Leute,

Ich versuch mal mein Problem zu schildern, wird nicht einfach . Ich arbeite auf VS2005 mit einer MSSQL Datenbank.

Folgendes:

Ich habe ein Menustrip zu meinem Projekt hinzugefügt. Dieser enthällt 6 Hauptmenüs und dann noch zu jedem Hauptmenü Submenüs und auch Subsubmenüs.
Alle MenuItems sind auf Visible = false.

Nun habe ich ein query der in einer UserRestriction Table nachschaut welche MenuItems für den User auf Visible = true gesetzt werden sollen. Deis funktionniert auch einwandfrei.

Mein Problem ist nun dass ich über folgenden Code nur auf die Hauptmenüpunkte zugreiffen kann. Die Submenüs erkennt er nicht.


while (rdr.Read())
{
  // Show menu items the user has access to
  string ItemName = rdr["MNU_NAME"].ToString();
  msMainMenu.Items[ItemMenu].Visible = true;
}

Ich hoffe ich konnte mich ein wenig klar ausdrücken. Ist schon recht kompliziert zu erklären

Ich hoffe es kann mir jemand helfen...
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von |SmEaGoL| am .
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo |SmEaGoL|,

ich vermute man du meinst sowas wie

msMainMenu.Items[ItemMainMenu].Items[ItemSubMenu].Visible
was aber natürlich sehr unpraktisch ist.

Besser ist es, du merkst dir *alle* Items in einem eigenen Dictionary. Dann kannst du mit myDict[ItemMenu].Visible zugreifen.

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



Dabei seit:
Beiträge: 24
Herkunft: Luxemburg

Themenstarter:

beantworten | zitieren | melden

Hallo herbivore,

Vielen Dank für deine Antwort.

Könntest du mir vielleicht kurz die Funktionsweise eines Dictionarys erklären? Bin relativ neu im .NET
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo |SmEaGoL|,

[Artikel] Grundlegendes zu Hashtable/Dictionary

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



Dabei seit:
Beiträge: 24
Herkunft: Luxemburg

Themenstarter:

beantworten | zitieren | melden

Also vielleicht bin ich etwas zu blöd X( aber ich komme damit irgendwie nicht klar.

Woher weiss das Dictionnary denn dass es ein MenuItem auf visible soll setzen??

Versteh da irgendwie nur Bahnhof. Vom Query bekomme ich im Grunde genommen nur den Namen des MenuItems welcher auf Visible = true gesetzt werden muss.
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo |SmEaGoL|,
Zitat
Woher weiss das Dictionnary denn dass es ein MenuItem auf visible soll setzen??
das Dictionary weiß das gar nicht. Das Dictionary enthält nur alle Items, damit du leicht auf das richtige zugreifen kannst.
Zitat
Vom Query bekomme ich im Grunde genommen nur den Namen des MenuItems welcher auf Visible = true gesetzt werden muss.
Genau, und diesen Namen verwendest du als Key im Dictionary, um das zugehörige Item zu bekommen und es dann selbst auf Visible zu setzen.

Es ist ganz einfach. Ich habe alles gesagt, was du wissen muss.

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



Dabei seit:
Beiträge: 24
Herkunft: Luxemburg

Themenstarter:

beantworten | zitieren | melden

Super, es hat geklappt.

Hab das Dictionary folgendermassen deklariert:


Dictionary<string, ToolStripMenuItem> myDict = new Dictionary<string, ToolStripMenuItem>();

Hab danach ein paar MenuItems dazugepackt:


myDict.Add("miMain", miMain);
myDict.Add("miExit", miExit);
myDict.Add("miImport", miImport);

So kann ich es dann unten so aufrufen wie du in einem vorherigen Post gesagt hast. Und so klappt es.

Danke
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von |SmEaGoL| am .
private Nachricht | Beiträge des Benutzers