Benutzer mit den meisten Antworten
Ein Menü-Item ansprechen

Frage
-
Hallo Forum,
die Methode MakeUserMenu() erstellt ein Menü. In dieser Methode möchte ich den Menüpunkt "iniWrite" deaktivieren.
In der Methode btn_Click möchte ich diesen Menü-Punkt wieder aktivieren. Wie kann aber diesen Menüpunkt ansprechen?
Der Code:
private void MakeUserMenu() { ReadWriteIniFile ini = new ReadWriteIniFile(ref _InstallationData, PasswordLenght); MainMenu menu = new MainMenu(); MenuItem file = new MenuItem("Tools"); MenuItem iniWrite = new MenuItem("&Ini-File schreiben", new EventHandler(ini.WriteIni)); MenuItem iniRead = new MenuItem("&Ini-File Einlesen", new EventHandler(ini.ReadIni)); file.MenuItems.Add(iniWrite); file.MenuItems.Add(iniRead); menu.MenuItems.Add(file); this.Menu = menu; }
private void btn_Click( object sender, EventArgs e ) { try { _InstallationData.ClearAll(); CheckOS os = new CheckOS(ref _InstallationData); ConnectAndGetDataFromMySql getData = new ConnectAndGetDataFromMySql(ref _InstallationData); PasswordGenerator passwordGenerator = new PasswordGenerator(PasswordLenght, ref _InstallationData); GetDrivesForInstall(); } catch (Exception ex) { log.Error("Fehler beim ProgrammStart in MainForm: " + ex.Message); MessageBox.Show("Fehler: \n" + ex.Message,"Fehler in btnMySQL", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
Vielen Dank für Eure Hilfe
P.
Antworten
-
Purclot,
da hast Du 2 Wege ( mindestens ).
1. Du deklariest Dein MenuItem iniWrite auf Klassenebene, dann kannst Du es ganz einfach mittels Enabled()=false/true deaktivieren/aktivieren
2. Du kannst über die MenuItems Eigenschaft Deines this.Menu eine MenuItemCollection abrufen. Diese enthält Dein MenuItem file, das Du über die Find() Methode ermitteln kannst, bezw. wenn Du den searchAllChildren parameter auf true setzt, kannst Du auch direkt nach Deinem MenuItem iniWrite suchen.
Voraussetzung dafür ist aber, dass Du den jeweiligen MenuItem`s immer einen Namen zuweist.
Hannes
If you have got questions about this, just ask.
In a perfect world,
users would never enter data in the wrong form,
files they choose to open would always exist
and code would never have bugs.
C# to VB.NET: http://www.developerfusion.com/tools/convert/csharp-to-vb/- Als Antwort markiert Purclot Dienstag, 7. Februar 2012 09:58
-
Hallo P.,
Hier noch eine LINQ-Implementation.
Der Text des gesuchten MenuItems wurde vorher in einer Konstanten gespeichertprivate void btn_Click(object sender, EventArgs e) { var iniRead = (from file in this.Menu.MenuItems.OfType<MenuItem>() from menuItem in file.MenuItems.OfType<MenuItem>() where menuItem.Text == MENUTEXT_INI_READ select menuItem).FirstOrDefault(); if (iniRead != null) iniRead.Enabled = true; }
Gruß
Marcel- Als Antwort markiert Purclot Dienstag, 7. Februar 2012 09:58
Alle Antworten
-
Hallo Björn,
ja, es klappt solange ich das in der Methode "MakeUserMenu()" platziere ;-)
In der Methode btn_Click() ist "iniWrite" unbekannt und eben in dieser Methode möchte ich die MenuItems (de)aktivieren.
Gruß P.
- Bearbeitet Purclot Dienstag, 7. Februar 2012 08:54
-
Purclot,
da hast Du 2 Wege ( mindestens ).
1. Du deklariest Dein MenuItem iniWrite auf Klassenebene, dann kannst Du es ganz einfach mittels Enabled()=false/true deaktivieren/aktivieren
2. Du kannst über die MenuItems Eigenschaft Deines this.Menu eine MenuItemCollection abrufen. Diese enthält Dein MenuItem file, das Du über die Find() Methode ermitteln kannst, bezw. wenn Du den searchAllChildren parameter auf true setzt, kannst Du auch direkt nach Deinem MenuItem iniWrite suchen.
Voraussetzung dafür ist aber, dass Du den jeweiligen MenuItem`s immer einen Namen zuweist.
Hannes
If you have got questions about this, just ask.
In a perfect world,
users would never enter data in the wrong form,
files they choose to open would always exist
and code would never have bugs.
C# to VB.NET: http://www.developerfusion.com/tools/convert/csharp-to-vb/- Als Antwort markiert Purclot Dienstag, 7. Februar 2012 09:58
-
Hallo P.,
Hier noch eine LINQ-Implementation.
Der Text des gesuchten MenuItems wurde vorher in einer Konstanten gespeichertprivate void btn_Click(object sender, EventArgs e) { var iniRead = (from file in this.Menu.MenuItems.OfType<MenuItem>() from menuItem in file.MenuItems.OfType<MenuItem>() where menuItem.Text == MENUTEXT_INI_READ select menuItem).FirstOrDefault(); if (iniRead != null) iniRead.Enabled = true; }
Gruß
Marcel- Als Antwort markiert Purclot Dienstag, 7. Februar 2012 09:58