2017-12-05 5 views
-1

Ich habe mehrere Klassen in meinem Programm und ich verwende Windows Form, um die Objekte aus den verschiedenen Klassen zu erstellen und sie in verschiedenen Listenfeldern aufzulisten.Zugriffsparameter von einem Objekt in einer Listbox C#

Im Moment habe ich ein Formular mit allen Listboxen (Form 1) und ein anderes Formular (CreerVoiture), wo ich alle Informationen, um mein ausgewähltes Objekt zu erstellen.

enter image description here

enter image description here

Ein Beispiel ist, wenn ich auf die Schaltfläche "Voiture!" Meine zweite Form öffnet sich, wenn ich alle Informationen hinzufüge und auf "Ajouter" drücke, fügt das Objekt der ausgewählten Listbox hinzu.

-Code von Form1:

private void button1_Click(object sender, EventArgs e) 
    { 
     CreerVoiture creervoiture = new CreerVoiture(); 
     if (creervoiture.ShowDialog(this) == DialogResult.OK) 
     { 
      // Read the contents of form2's TextBox. 
      Voiture voiture = new Voiture(creervoiture.GetMarque(), creervoiture.GetPrix(), creervoiture.GetConsommation(), creervoiture.GetReservoir()); 
      this.list_voiture.Items.Add(voiture); 

      this.list_voiture.DataSource = null; 
     } 
     creervoiture.Dispose(); 
    } 

Was würde ich gerne wissen, ist, wie ich einen Parameter ich in meinem zweiten Formular hinzugefügt zugreifen können, wenn ich es in das Listenfeld hinzugefügt.

Ich dachte, wie etwas zu verwenden:

list_voiture.SelectedItem.Prix 

Prix aus meiner Klasse Voiture ist ein Getter

public double Prix 
    { 
     get { return this.prix; } 
     set { this.prix = value; } 
    } 

Aber das scheint nicht möglich zu sein. Ist das möglich und wenn ja, wie?

Vielen Dank im Voraus,

Jeremy

+0

Verwenden Sie 'ListBox.Items', um über alle Elemente in der ListBox zu iterieren. Wenn Sie nur das SelectedItem-Objekt benötigen, verwenden Sie die Eigenschaft 'ListBox.SelectedItem'. Außerdem müssen Sie die Eigenschaft in "Voiture" umwandeln und dann auf die Eigenschaften zugreifen. – Agalo

+0

Hallo danke für deine Antwort. Könnten Sie Ihre Antwort ein wenig mehr ausarbeiten, ich weiß nicht, was Sie meinen, wenn Sie die Eigenschaft an Voiture übergeben. Danke – Jeremy

+0

'var selectedItem = list_voiture.SelectedItem als Voiture' – Agalo

Antwort

1

Wenn der Typ des Objekts ist Voiture dann können Sie das Objekt auf diese Art werfen:

Voiture voiture = (Voiture)list_voiture.SelectedItem; 
double prix = voiture.Prix; 

Oder in eine Zeile:

double prix = ((Voiture)list_voiture.SelectedItem).Prix; 
+0

Danke für Ihre Antwort. Ich bin neu in den Formen und deshalb immer noch ein bisschen verwirrt. Ich habe einen Knopf auf meinem Formular hinzugefügt, der, wenn ich darauf klicke, den Preis (Prix) des Autos in Label1 schreiben soll. 'private void button1_Click_1 (Objektabsender, EventArgs e) { double prix = ((Voiture) list_voiture.SelectedItem) .Prix; label1.Text = prix.ToString(); } ' Aber es funktioniert nicht. Nichts passiert, wenn ich auf den Knopf klicke. Was mache ich falsch? – Jeremy

+0

vergiss es funktioniert :) Ich habe vergessen, die Methode auf meine Schaltfläche zu verknüpfen ... Danke für die Info! – Jeremy