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


        }
    }

1つがチェックされている場合、フォームはその結果を表示しますが、すべてのチェックボックスを選択したい場合は、それらをすべて表示する必要があります.

4

2 に答える 2

1

これを解決する 1 つの方法は、LabelからListViewに切り替えることです。次に、選択した数のアイテムを追加できます。3 を選択した場合は 3 を追加し、5 つすべてを選択した場合は 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; }
}

メニュー項目の配列だけを保持でき、価格と名前を 1 つのクラスにまとめることができます。

さらに推奨事項 -クラスと競合しないように、Menuクラスの名前を に変更することを検討してください。MyMenuSystem.Windows.Forms.Menu

于 2013-05-16T17:45:18.740 に答える
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;
    }
}
于 2013-05-16T18:01:31.567 に答える