2016-04-18 7 views
0

Dies hat mit Listenfeldern und Konstanten zu tun.So fügen Sie Labels hinzu, die Werte enthalten

Zuerst die ersten Dinge, wählen Sie jedes "Element" in den Listenfeldern. Dann, mit Konstanten, würde der Wert in den Etiketten erscheinen.

 workshop = workshopListBox.SelectedItem.ToString(); 
     switch (workshop) 
     { 
      case "Outdoor workshop bundle": 
       registrationFeeLabel.Text = OUTDOOR_WORKSHOP_BUNDLE.ToString("c"); 
       break; 
      case "Essential Outdoor Field Skills": 
       registrationFeeLabel.Text = ESSENTIAL_OUTDOOR_FIELD.ToString("c"); 
       break; 
      case "Picture Perfect Panoramas": 
       registrationFeeLabel.Text = PICTURE_PERFECT_PANORAMAS.ToString("c"); 
       break; 
      case "Night Photography Magic": 
       registrationFeeLabel.Text = NIGHT_PHOTOGRAPHY_MAGIC.ToString("c"); 
       break; 

     } 

     location = locationListBox.SelectedItem.ToString(); 
     switch (location) 
     { 
      case "Mont Tremblant": 
       lodgingFeeLabel.Text = MONT_TREMBLANT.ToString("c"); 
       break; 
      case "Quebec": 
       lodgingFeeLabel.Text = QUEBEC.ToString("c"); 
       break; 
      case "Montreal": 
       lodgingFeeLabel.Text = MONTREAL.ToString("c"); 
       break; 

hier sind die Konstanten und Werte:

const int OUTDOOR_WORKSHOP_BUNDLE = 200; 
    const int ESSENTIAL_OUTDOOR_FIELD = 100; 
    const int PICTURE_PERFECT_PANORAMAS = 100; 
    const int NIGHT_PHOTOGRAPHY_MAGIC = 150; 
    const int MONT_TREMBLANT = 75; 
    const int QUEBEC = 95; 
    const int MONTREAL = 0; 
    string workshop; 
    string location; 

Wie würde ich „halten“, was auch immer der Wert in dem Etikett ist, dass der Benutzer nimmt, und fügen hinzu, dass mit dem anderen dass der Benutzer wählt? Danke

Antwort

0

Sie möchten nicht die Werte in den Etiketten hinzufügen, so liegt seltsame Bugs wie Konvertierungen schief gehen.

Stattdessen haben Sie bereits eine Möglichkeit, den numerischen Wert für eine bestimmte ListBox-Auswahl zu finden. Sie sollten diese stattdessen verwenden.

0

Sie sollten Ihre Geschäftslogik nicht in Beschriftungen und Listenfeldern ausführen. Ich schlage vor, Sie eine Klasse für die Werkstatt Elemente erstellen

public class Workshop 
{ 
    public string Name { get; set; } 
    public decimal Price { get; set; } 

    // Visual Studio 2015/C#6.0 syntax. 
    public override string ToString() => $"{Name} ({Price:c})"; 
} 

Jetzt haben Sie eine Liste mit

List<Workshop> workshops = new List<Workshop> { 
    new Workshop { Name = "Outdoor workshop bundle", Price = 200m }, 
    new Workshop { Name = "Essential Outdoor Field Skills", Price = 100m}, 
    ... 
}; 

Ordnen Sie die Liste der Listbox

workshopListBox.DataSource = workshops; 

Wählen Sie das ausgewählte Element erstellen kann wie diese

var item = (Workshop)workshopListBox.SelectedItem; 

Und fügen Sie den Preis in einem Summenfeld bis

decimal sum = 0.0m; // Make it a field, not a local variable. 

... 

sum += item.Price; 
registrationFeeLabel.Text = sum.ToString("c"); 

Jetzt, da der Werkstatt Artikelname und Preis enthält und auch, weil die Listbox enthält Werkstatt Elemente statt nur Strings, die Sie nicht brauchen, um die Case-Anweisungen mehr . Es ist wichtig, die ToString-Methode zu überschreiben. Die Listbox benötigt es, um zu wissen, wie die Artikel angezeigt werden.

Verwandte Themen