Laden...

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

Erstellt von |SmEaGoL| vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.162 Views
|
|SmEaGoL| Themenstarter:in
24 Beiträge seit 2007
vor 16 Jahren
[gelöst] MenuStrip Items auf visible setzen mit Hilfe eines Querys

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...

49.485 Beiträge seit 2005
vor 16 Jahren

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

|
|SmEaGoL| Themenstarter:in
24 Beiträge seit 2007
vor 16 Jahren

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 🙂

49.485 Beiträge seit 2005
vor 16 Jahren
|
|SmEaGoL| Themenstarter:in
24 Beiträge seit 2007
vor 16 Jahren

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.

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo |SmEaGoL|,

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.

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

|
|SmEaGoL| Themenstarter:in
24 Beiträge seit 2007
vor 16 Jahren

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