简体   繁体   中英

Storing a value to a listbox item C#

I wish to know how to store a VALUE to an item in a listbox. I'm currently working out a worksheet for my studies, and I've been wondering how to do this. Basically I need to store values to the Food (such as broccoli, bread. For example: Broccoli has a value of 20 calories).

The user must not see the value, only the program can store it.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace MCAST_Calorie_Counter
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            lbAvailable.Items.Clear();
            if (comboBox1.Text == "Vegetables")
            {
                lbAvailable.Items.Add("Broccoli");
                lbAvailable.Items.Add("Carrots");
                lbAvailable.Items.Add("Lettuce");
                lbAvailable.Items.Add("Onions");
                lbAvailable.Items.Add("Potatoes");
            }

            if (comboBox1.Text == "Meat")
            {
                lbAvailable.Items.Add("Chicken");
                lbAvailable.Items.Add("Veal");
                lbAvailable.Items.Add("Beef");
                lbAvailable.Items.Add("Fish");
            }

            if (comboBox1.Text == "Legumes")
            {
                lbAvailable.Items.Add("Bread");
                lbAvailable.Items.Add("Peanuts");
                lbAvailable.Items.Add("Green Peas");
                lbAvailable.Items.Add("Lentils");
            }
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            ListBox.SelectedObjectCollection highlightedItems = lbAvailable.SelectedItems;

            foreach (var item in highlightedItems)
            {
                lbChosen.Items.Add(item);
            }
            if (lbAvailable.SelectedItems.Count > 0)
            {
                lbAvailable.Items.Remove(lbAvailable.SelectedItems[0]);
            }
        }

        private void btnRemove_Click(object sender, EventArgs e)
        {
            ListBox.SelectedObjectCollection highlightedItems = lbChosen.SelectedItems;

            foreach (var item in highlightedItems)
            {
                lbAvailable.Items.Add(item);
            }
            if (lbChosen.SelectedItems.Count > 0)
            {
                lbChosen.Items.Remove(lbChosen.SelectedItems[0]);
            }
        }

        private void btnClear_Click(object sender, EventArgs e)
        {
            lbAvailable.Items.Clear();
            lbChosen.Items.Clear();
            if (comboBox1.Text == "Vegetables")
            {
                lbAvailable.Items.Add("Broccoli");
                lbAvailable.Items.Add("Carrots");
                lbAvailable.Items.Add("Lettuce");
                lbAvailable.Items.Add("Onions");
                lbAvailable.Items.Add("Potatoes");
            }

            if (comboBox1.Text == "Meat")
            {
                lbAvailable.Items.Add("Chicken");
                lbAvailable.Items.Add("Veal");
                lbAvailable.Items.Add("Beef");
                lbAvailable.Items.Add("Fish");
            }

            if (comboBox1.Text == "Legumes")
            {
                lbAvailable.Items.Add("Bread");
                lbAvailable.Items.Add("Peanuts");
                lbAvailable.Items.Add("Green Peas");
                lbAvailable.Items.Add("Lentils");
            }
        }
    }
}

Thanks alot for your help!

You can always add custom objects that support ToString() to the ListBox.Items collection:

struct Record
{
    int value;
    string label;

    public override string ToString()
    {
        return label;
    }
}

Adding a custom object:

Record record = new Record();
record.value = 1;
record.label = "This text will appear in the ListBox";
listBox.Items.Add(record);

Retrieving it:

Record selectedRecord = (Record)listBox.SelectedItem;
Console.WriteLine(selectedRecord.value); // => 1

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM