2016-04-18 12 views
0

これはリストボックスと定数と関係があります。値を持つラベルを追加する方法

まず最初に、リストボックスの各「項目」を選択します。 次に、定数を使用して、値がラベルに表示されます。ここ

 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; 

定数と値は以下のとおりです。

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; 

どのように私は値がそのユーザーピックラベルにあるものは何でも「維持」、および他のものとそれを追加しますユーザーが選んだのは?ありがとうございました

答えて

0

ラベルに値を追加したくない場合は、コンバージョンがうまくいかず、不思議なバグがあります。

代わりに、既に指定したListBoxの選択肢の数値を見つける方法があります。代わりにその値を使用する必要があります。

0

ラベルやリストボックスでビジネスロジックを実行しないでください。私はあなたのように選択した項目を選んで、あなたがリストボックス

workshopListBox.DataSource = workshops; 

にリストを割り当て

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

でリストを作成することができます

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})"; 
} 

ワークショップのアイテムのためのクラスを作成することをお勧めこの

var item = (Workshop)workshopListBox.SelectedItem; 

そして、ワークショップのアイテムは名前と価格が含まれており、リストボックスは、ワークショップのアイテムだけではなく、文字列が含まれてもいるので、あなたは、それ以上の場合ステートメントを必要としないので、

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

... 

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

今サムフィールドに価格を追加。 ToStringメソッドをオーバーライドすることが重要です。リストボックスは、アイテムの表示方法を知るために必要です。

関連する問題