2013-05-16 19 views
0

我正在創建一個應用程序,用戶從比薩餅和飲料的選擇中進行選擇。 我使用比薩餅選擇的數組列表 從使用複選框的表單;什麼,我需要做的,如果所有5個複選框被選中,那麼從陣列如何使用另一個數組中的索引獲取數組中的位置?

在這裏得到的所有數據是從類

namespace order 
{ 
    class Menu 
    { 
     string[] pizza = {"Cheese and Ham", "Ham and Pineapple", "Vegetarian", "MeatFeast", "Seafood" }; 
     double[] price = {3.50, 4.20, 5.20, 5.80, 5.60 }; 

     public string GetMenuItem(int select) 
     { 
      string choice = pizza[select]; 
      return choice; 
     } 


這個代碼的形式代碼

namespace order 

{ 
    public partial class Form1 : Form 
    { 

     Menu menuMaker = new Menu(); 
     public Form1() 
     { 
      InitializeComponent(); 

     } 

     private void button1_Click(object sender, EventArgs e) 
     { 


      if (checkBox1.Checked) 
      { 
       label1.Text = menuMaker.GetMenuItem(0); 
      } 


     } 
    } 
如果一個人被選中,然後由此產生的形式顯示,但

如果我想選擇它需要以示出了T所有複選框下襬一切。

+2

的ArrayList是框架(內System.Collections中一個非常特殊的類型。數組列表)。當你只是一個數組時,不要說「數組列表」。 –

+2

你也有5個標籤嗎? – Steve

+0

查看我的答案,您可以從菜單列表中創建複選框,無需在表單上手動爲每個項目添加複選框。只是爲了學習,你可以;) – Mateusz

回答

1

解決此問題的一種方法是從Label切換到ListView。然後,您可以添加儘可能多的項目。如果他們選擇3,則添加3,如果他們選擇全部5,則添加全部五個。

實施例使用一個列表視圖 -

public partial class Form1 : Form 
{ 
    Menu menuMaker = new Menu(); 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     listView.Clear(); 

     if (checkBox1.Checked) 
     { 
      listView.Items.Add(menuMaker.GetMenuItem(0)); 
     } 
     if (checkBox2.Checked) 
     { 
      listView.Items.Add(menuMaker.GetMenuItem(1)); 
     } 
    } 
} 

作爲旁。您可能需要考慮創建一個包含價格的比薩餅輔助班。喜歡的東西 -

class MyMenuItem 
{ 
    public string Name { get; set; } 
    public double Price { get; set; } 
} 

比你能保持公正的菜單項的數組,你在一個類有價格和名字聯繫在一起。

更多推薦 - 您可能需要考慮將您的Menu類重命名爲MyMenu,以免它與System.Windows.Forms.Menu類發生衝突。

+0

謝謝我已經完成了添加項目的問題,並且您對代碼的反饋是好的我將開始處理屬性 – georgefish

0

更好,但不是很好也,你必須PANEL1添加到形式:

public Form1() 
    { 
     InitializeComponent(); 
     list = new List<CheckBox>(); 
    } 
    List<CheckBox> list; 
    Menu menu; 
    private void Form1_Load(object sender, EventArgs e) 
    { 
     menu = new Menu(); 
     int i = 10; 
     foreach(var item in menu.pizza){ 
      CheckBox checkBox = new CheckBox(); 
      checkBox.Text = item; 
      checkBox.Location = new System.Drawing.Point(10, i); 
      i = i + 30; 
      list.Add(checkBox); 
      panel1.Controls.Add(checkBox); 
     } 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     for (int i = 0; i < list.Count;i++) 
     { 
      if (list[i].Checked) 
      { 
       label1.Text += menu.GetMenuItem(i); 
      } 
     } 
    } 
} 

和更改菜單:

class Menu 
{ 
    public readonly string[] pizza = { "Cheese and Ham", "Ham and Pineapple", "Vegetarian", "MeatFeast", "Seafood" }; 
    public readonly double[] price = { 3.50, 4.20, 5.20, 5.80, 5.60 }; 

    public string GetMenuItem(int select) 
    { 
     string choice = pizza[select]; 
     return choice; 
    } 
} 
相關問題