Как (или я могу) перечислить атрибуты объектов из общего списка, отображая его в выпадающем списке - PullRequest
1 голос
/ 24 июня 2011

Я просто новичок, поэтому я думаю, что очень часто сталкиваюсь с такой проблемой.

Вот в чем дело.

У меня есть общий список объектов, скажем такgarage, многие Car объекты находятся в гараже.

List<Cars> garage=new List<Car>();

У автомобиля есть атрибут, например, car.make;Модель автомобиля;car.year;

Теперь у меня есть этот список garage, и в этот список было добавлено несколько автомобилей.

я хочу использовать ComboBox для вывода списка одного определенного атрибутаиз этих автомобилей.

например, я хочу, чтобы в этом раскрывающемся списке отображался год автомобиля (предположим, что у всех автомобилей был различный год).Все, что я могу пойти так далеко, это так, но я не знаю, как идти дальше.

    myComboBox.DataSource = garage???

Может ли кто-нибудь помочь мне указать на что-нибудь?Я знаю, что это должно иметь какое-то отношение к общему списку, но книги, которые я использую, используют только пару страниц и не углубляются в это.

    namespace test
    {
        public partial class Form1 : Form
        {
            List<car> garage = new List<car>();
            public Form1()
            {
                InitializeComponent();
                car c1 = new car(98, "corolla", "toyota");
                car c2 = new car(99, "camary", "toyota");
                car c3 = new car(00, "eclipse", "misubishi");

                garage.Add(c1);
                garage.Add(c2);
                garage.Add(c3);
                foreach (car c in garage)
                {
                    cBox.Items.Add(c.make);
                }
            }



            private void button1_Click(object sender, EventArgs e)
            {
                MessageBox.Show(garage[cBox.SelectedIndex].make);
            }
        }
        class car 
        {
            public int year;
            public string make;
            public string brand;
            public car(int y, string m, string b)
            {
                year = y;
                make = m;
                brand = b;
            }
        }
    }

Ответы [ 3 ]

3 голосов
/ 24 июня 2011

Я не знаю, какую комбинацию вы используете (Winforms, WebForms), но должны быть DisplayMember (какой атрибут будет использоваться как текст в комбо) и ValueMember (какой атрибут будет использоваться в качестве значения)

http://windowsclient.net/blogs/faqs/archive/2006/07/12/what-are-the-displaymember-and-valuemember.aspx

3 голосов
/ 24 июня 2011

Вы можете иметь следующие

    myComboBox.DisplayMember = "year";//Here year is the car year
    myComboBox.ValueMember = "name";//Here name is the car name
    myComboBox.DataSource = garage;

Спасибо Ashwani

1 голос
/ 26 июня 2011

Теперь у меня есть решение, это использовать итератор для добавления элементов.

foreach (car c in garage)
        {
            cBox1.Items.Add(c.make);
            cBox2.Items.Add(c.year);
        }

это будет работать достаточно хорошо.

...