Daten aus Listview in jeweilige Textbox einfügen

StonedMind

Mitglied
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:

Code:
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
 
Mache das über DatenBinding.

Erstelle eine Klasse mit deinen gewünschten Eigenschaften und implementiere dazu die Schnittstelle INotifyPropertyChanged.
(Für die Implementierung der Schnittstelle am besten die Hilfe aufrufen)

für startseite
Dann legst du dir eine Liste mittel BindingList<T> an, wobei du als Generischen Typen dann deine Kalsse angibst.

Im Designer gehst du ins Eigenschaftenfenster, zu Eigenschaft DataSource und waählst dort Objekt zu DataSource hinzufügen (oder so ähnlich). Dort wählst du dann deine neu erstellte Klasse aus.

Jetzt müsste in deinem Designer eine neue Componente mit irgendwasBindingSource erscheinen. Diese Componente hat eine Eigenschaft DataSource. Dieser Eigenschaft übergibst du deine Liste.

Die Compo. BindingSource hat ein Ereignis CurrentChanged, dieses Ereignis wird ausgelöst wenn ein Element in deiner List angeklickt/markiert/selektiert wird.
Über die Eigenschaft Current bekommst du das derzeit selektierte Objekt.

PersonEdit
denn TextBoxen kannst du selbst auch einzelne Eigenschaften für DatenBindung angeben.
Im Designer gibts dazu bei der TextBox im Eigenschaftenfenster denn Punkt "(DataBindings)".
Das DataBindings Fenster am besten über den Punkt "(Advanced)" anzeigen lassen.
Im Advanced Fenster jetzt die Eigenschaft Text auswählen.
Bei Binding dann die Eigenschaft die angezeigt werden soll und da die Schnittstelle INotifyPropertyChanged implementiert wurde. Bei DataSource Update Mode PropertyChanged auswählen.

Wenn alles richtig läuft, kannst du jetzt bei personEdit die Daten ändern und deine ListBox sollte automatisch die geänderten Daten anzeigen.


Klassen werden immer By Referenz übergeben, d.h. startseite und PersonEdit halten die gleiche Instanz und so muss das auch übergeben werden damit die Änderungen verfolgt werden können.


Hoffe hab alles halbwegs richtig ^^
Habs zwar IDE offen, aber nur zum nachschaun ob ich die Menüpunkte richtig getroffen habe :D

Edit:
hm, überlege gerade, glaube du arbeitest mit C++ oder?
Ob das da auch so einfach ist kann ich nicht sagen.
Meine Angaben kommen von C#.
 
Zuletzt bearbeitet:
Hallo zusammen,

habe das Problem gelöst und die Supereigenschaft gefunden:
Code:
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
 

Neue Beiträge

Zurück