Hallo alle zusammen,
habe folgendes Problem,
habe eine Form mit Menü erstellt und soll nach Benutzerechten MenuItems aktivieren(Standart steht Visible=false). Nachdem ich Menüname aus der Datenbank auslese möchte ich schon lelandete Menü aktivieren, dass klappt leider nicht. Wie kann ich Items aktivieren?
foreach(MenuItem mi in this.mainMenu1.MenuItems)
{
foreach(DataRow r in dt.Rows)
{
a=->->kommt aus Datenbank
if((mi.Text==a))
{
mi.Enabled=true;///da funzt es nicht!!!
}
}
}
Vieleicht stimmt was mit dem string a nicht, kannst ja mal versuchen ihn per MessageBox.Show(a) auszugeben.
Gruß,
SimonKnight6600
Also jedes Menü besteht wieder aus Untermenüs. Also kannst einfach noch ne foreach Schleife reinsetzen, dann findest du auch deine Menüs. Wenn die Schachtelungstiefe der Menüs noch tiefer ist, musst du das halt rekursiv programmieren. Dann erwischt du auch alle. Vermutlich gibt es noch einen viel schöneren und sauberen Weg, aber denn kenn ich nicht. Also Quick&Dirty:
foreach(MenuItem mi in this.mainMenu1.MenuItems)
{
if((mi.Text==a))
mi.Enabled=true; //hauptmenü
foreach(MenuItem x in mi.MenuItems)
{
if((x.Text==a))
x.Enabled=true; //Untermenü
}
}
Gruß
Snowwolf
Vielen Dank für den Rat 🙂Jetzt glaube weiss ich woran dass liegt: ich starte Anmeldeformular , wo man sich anmeldet-->wenn Anmeldung erfolgreich-->>rufe diese Methode auf (ich führe diese Methode von einem anderen Formular aus mit Hilfe des Konstruktors, die Methode in gleichem Formular wo Menü ist fHome frm=new fHome(); frm.MethodeName()😉Meine Frage ist:wie kann ich auf Steuerelemente anderen Formularen oder Methoden ohne Konstruktor zugreifen?