Daten aus selektierter Listview in jeweilige Textbox einfügen



  • Hallo zusammen,

    programmiere eine GUI-Anwendung mit VS 2008 Express.
    Folgende Ausgangssituation:
    Ich habe ein Hauptfenster(startseite.h) in der eine ListView mit Personendaten vorhanden ist.

    Ich wähle die betreffende Person in der ListView aus(startseite.h), um deren Daten zu ändern, betätige den "Bearbeiten-Button"(immer noch startseite.h). Dann öffnet sich ein neues Fenster (PersonEdit.h), welches mit Textboxen ausgestattet ist. Nun möchte ich die jeweiligen Daten aus der ListView in die richtige Textbox autom. einfügen.

    Meine erste Vermutung war, dass die Daten der selektierten Person, als Array gespeichert werden und ich nur den entsprechenden Index in die Textbox einfügen muss:

    editprs->frmPrsEdit_textBox1->Text = lstV_startseite->SelectedItems[0]->ToString();
    

    Das klappt aber nicht ganz.(Bin mir nicht mal sicher, ob ich die richtige Eigenschaft/Ereignis verwende...)

    Wie kann ich also Daten aus einer ListView in Textboxen eines anderen Fensters einfügen???

    Vielen Dank schon mal für Eure Hilfe

    MfG
    Andy



  • Kannst Du mal sagen, WAS nicht ganz klappt?



  • Also ich wähle die entsprechende Person aus und dann steht in meiner ersten Textbox: {ListViewItem NameDerPerson} anstatt NameDerPerson

    Jetzt habe ich aber eine andere Möglichkeit gefunden:

    editazubi->frmAzEdit_textBox1->Text = lstV_main_window_azubi->SelectedItems[0]->Text;
    

    Hier werden jetzt die Daten korrekt in die Listbox übertragen: NameDerPerson

    Wenn ich allerdings den nächsten Index ansprechen möchte...

    editazubi->frmAzEdit_textBox1->Text = lstV_main_window_azubi->SelectedItems[1]->Text;
    

    ...dann erscheint folgende Fehlermeldung:
    An unhandled exception of type 'System.ArgumentOutOfRangeException' occurred in System.Windows.Forms.dll

    Additional information: InvalidArgument=Value mit dem Wert 1 ist für index ungültig.

    Versuch es schon die ganze Zeit mit irgendwelchen Eigenschaften, aber nichts klappt...
    oder ist einfach mein Denkansatz falsch?

    Danke aber für die schnelle Antwort

    MfG
    Andy



  • SelectedItems gibt eine Collection der angewählten (!) Items zurück.
    Wieviele das sind findest Du dann mit SelectedItems.Count heraus.

    Offenbar hast Du nur 1 Item selektiert gehabt, und so war der index 1 ungültig (-> ArgumentOutOfRangeException).

    Möchtest Du denn eigentlich auf alle Items zugreifen oder wikrlich nur auf die selektierten?

    Ausserdem sind in der ListView drin Objekte des Typs ListViewItem. Die Eigenschaft Text gibt dir dann den Text der 1. Spalte zurück.

    Und noch ein Hinweis: wenn Du SelectedItems[0]->ToString() aufrufst, dann wird die ToString Methode des aktuellen ListViewItem's aufgerufen, und das ist höchstwahrscheinlich nicht das was Du willst.

    Simon



  • Am besten schaust Du dir an wie die Daten in die ListView abgefüllt werden. So sollen sie auch wieder ausgepackt werden!



  • Hallo zusammen,

    habe das Problem gelöst und die Supereigenschaft gefunden:

    editazubi->frmAzEdit_textBox1->Text = lstV_main_window_azubi->FocusedItem->SubItems->default[0]->Text->ToString();
    editazubi->frmAzEdit_textBox2->Text = lstV_main_window_azubi->FocusedItem->SubItems->default[1]->Text->ToString();
    editazubi->frmAzEdit_textBox3->Text = lstV_main_window_azubi->FocusedItem->SubItems->default[2]->Text->ToString();
    .
    .
    .
    

    Trotzdem vielen Dank für die schnelle und tatkräftige Unterstützung

    MfG
    Andy




  • 2. Das Vorgehen ist haarsträubend, besser wäre:
    a.) Was brauche ich?
    b.) Was gibts für Funktionen / Klassen?
    c.) Wie passts zusammen?
    Lies doch mal nach was FocusedItem zurück gibt. Ist es wirklich das was du willst?
    3. Die Text Eigenschaft gibt einen String^ zurück und daher ist ->ToString() überflüssig!


Anmelden zum Antworten