如何使用另一个数组的索引获得数组中的位置
本文关键字:数组 位置 索引 何使用 另一个 | 更新日期: 2023-09-27 18:14:02
我正在创建一个用户从选择披萨和饮料中选择的应用程序。我使用一个数组列表来选择披萨从表单中使用复选框;如果所有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);
}
}
}
如果选中了其中一个,则显示结果,但如果我想选中所有的复选框,则需要显示所有的复选框
解决这个问题的一种方法是从Label
切换到ListView。然后,您可以添加尽可能多的已选择的项目。如果他们选了3,你加3,如果他们选了所有5,你加所有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
类冲突。
更好,但不是很好,你必须添加panel1到form:
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;
}
}