2013-05-16 2 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); 
      } 


     } 
    } 

, если один будет установлен, то в форме отображается, что результат, но если бы я хотел, чтобы выбрать все флажки он требует, чтобы показать т кромка все.

+2

ArrayList очень специфический тип в рамках (System.Collections. ArrayList). Не говорите «Список массивов», когда вы просто имеете в виду массив. –

+2

У вас также есть 5 ярлыков? – Steve

+0

Проверьте мой ответ, вы можете создавать флажки из списка меню, не нужно устанавливать флажки для каждого элемента вручную по форме. Просто, чтобы узнать, что вы можете;) – Mateusz

ответ

1

Одним из подходов к решению этого вопроса является переход от Label к ListView. Затем вы можете добавить столько элементов, сколько было выбрано. Если они выбирают 3, вы добавляете 3, если они выбирают все 5, вы добавляете все пять.

Пример с использованием ListView -

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

лучше, но не приятно также, вы должны добавить ПАНЕЛЬ1 в виде:

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; 
    } 
} 
Смежные вопросы