listenfeld markierung



  • Ich hoffe mir kann jemand helfen,

    ich habe 3 listenfelder.
    Im ersten listenfeld werden aus der Registrierung die Schlüssel von HKEY_CURRENT_USER angezeigt.

    im 2 Listenfeld sollen die unterschlüssel angezeigt werden, von der aus listenfeld 1 markierten schlüssel.

    //ein Array mit Zeichenketten für die Schlüssel
    				 array <String^> ^regSchluesselListe;
    				 //ein Array mit Zeichenketten für die Einträge
    				 array <String^> ^regEintragListe;
    				 //einen Handle für die Klasse RegistryKey
    				 RegistryKey ^regSchluessel;
    				 //den Inhalt der drei Listenfelder löschen
    				 listBox1->Items->Clear();
    				 listBox2->Items->Clear();
    				 listBox3->Items->Clear();
    
    //die Schlüssel aus HKEY_CURRENT_USER holen
    regSchluesselListe = Registry::CurrentUser->GetSubKeyNames();
    //und in das erste Listenfeld eintragen
    for each (String ^eintrag in regSchluesselListe)
    listBox1->Items->Add(eintrag);
    ///listBox1->Select();
    
    if(listBox1->SelectedIndex == -1){
    MessageBox::Show("Bitte in Liste 1 einen Eintrag markieren");
    return;
    
    }
    else
    {
    regSchluessel = Registry::CurrentUser->OpenSubKey(listBox1->SelectedItem->ToString());
    //und jetzt alle Unterschlüssel für Software lesen
    regSchluesselListe = regSchluessel->GetSubKeyNames();
    }
    
    //in das zweite Listenfeld eintragen
    for each (String ^eintrag in regSchluesselListe)
    listBox2->Items->Add(eintrag);
    
    if(listBox2->SelectedIndex == -1){
    MessageBox::Show("Bitte in Liste 2 einen Eintrag markieren");
    ///listBox1->Items->Clear();
    return;
    }
    
    ///den Schlüssel \Software\Microsoft\VCExpress\9.0 öffnen
    regSchluessel = Registry::CurrentUser->OpenSubKey(listBox2->SelectedItem->ToString());
    if(regSchluessel==nullptr){
    MessageBox::Show("Der Schlüssel konnte nicht geöffnet werden");
    listBox2->Items->Clear();
    return;
    
    }
    //die Unterschlüssel lesen und in das dritte Listenfeld eintragen
    regSchluesselListe = regSchluessel->GetSubKeyNames();
    
    for each (String ^eintrag in regSchluesselListe)
    listBox3->Items->Add(eintrag + " (Schlüssel)");
    
    //und nun die eigentlichen Einträge lesen
    regEintragListe = regSchluessel->GetValueNames();
    //die Namen und die Werte in das dritte Listenfeld schreiben
    for each (String ^eintrag in regEintragListe)
    listBox3->Items->Add(eintrag + " = " + Convert::ToString(regSchluessel->GetValue(eintrag)));
    

    wenn man den schlüssel für das 2. listenfeld auslesen möchte wiederholt er den ersten Vorgang!

    Wie kann man das ändern!

    Danke schon mal



  • Kann mir keiner weiter helfen?



  • Er befüllt das erste Feld zwar richtig, aber wiederholt die erste IF abfrage dauernt!

    if(listBox1->SelectedIndex == -1){
    MessageBox::Show("Bitte in Liste 1 einen Eintrag markieren");
    return;
    

    wenn ich aber das return; wegnehme befüllt er ohne Markierung einfach das 2. listenfeld!



  • Hi Supreme,

    wie währe es mit einer Methode der listBox1 anzufangen:

    private: System::Void listBox1_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e) {...}

    und das ausgewählte element als Attribut zu speichern?

    Grüße
    Jürgen



  • Gibt es nicht die möglichkeit das ich es mit der for each schleife machen kann?



  • mit for each füllst Du dann ja auch die listBox2 aber woher soll denn das for each der 2ten listBox wissen woher die Daten kommen.
    Für die listBox1 hast Du ja auch ein Wegweiser für die Daten bereitgestellt:
    //die Schlüssel aus HKEY_CURRENT_USER holen
    regSchluesselListe = Registry::CurrentUser->GetSubKeyNames();
    //und in das erste Listenfeld eintragen
    for each (String ^eintrag in regSchluesselListe)
    listBox1->Items->Add(eintrag);

    Um in der listBox2 und 3 was zu schreiben, muste Dir schon ein Phad zusammenbauen.
    So schwer fand ich die Aufgabe gar nicht 🙂

    regSchluessel = Registry::CurrentUser->OpenSubKey(listBox1auswahl);



  • kann du mir sagen wie ich die markierung anspreche? listBox2-> ????

    Danke



  • if (listBox1->SelectedIndex != -1) {
    				 listBox1wahl = listBox1->Text;
    				 }
    

Anmelden zum Antworten