System.Int32 [] в ComboBox - PullRequest
       1

System.Int32 [] в ComboBox

0 голосов
/ 14 января 2020

У меня есть список объектов:

class Cylindree
{
    public int NomCylindree;

    public static List<Cylindree> lesCylindreesTwoStroke = new List<Cylindree>()
    {
        new Cylindree() { NomCylindree = 125},
        new Cylindree() { NomCylindree = 144},
        new Cylindree() { NomCylindree = 150},
        new Cylindree() { NomCylindree = 200},
        new Cylindree() { NomCylindree = 250},
        new Cylindree() { NomCylindree = 300}
    };

    public static List<Cylindree> lesCylindreesFourStroke = new List<Cylindree>()
    {
        new Cylindree() { NomCylindree = 250},
        new Cylindree() { NomCylindree = 300},
        new Cylindree() { NomCylindree = 350},
        new Cylindree() { NomCylindree = 400},
        new Cylindree() { NomCylindree = 450},
        new Cylindree() { NomCylindree = 500}
    };

    public Cylindree(int NomCylindree)
    {
        this.NomCylindree = NomCylindree;
    }

    public Cylindree() { }
}

И в моем основном это:

private void lesMoteurs_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (lesMoteurs.Text == "2T")
            {
                lesCylindrees.Items.Add(Cylindree.lesCylindreesTwoStroke.Select(x => x.NomCylindree).ToArray().ToString());
            }
        }

И я получил "System.Int32 []" в моем ComboBox. Я хочу получить свой список в моем ComboBox, чтобы выбрать значение, которое я хочу. Что мне нужно сделать, чтобы получить мой список, пожалуйста?

Спасибо за дополнительную помощь

Ответы [ 2 ]

2 голосов
/ 14 января 2020

Другой вариант - установить значения как DataSource:

lesCylindrees.DataSource = Cylindree.lesCylindreesTwoStroke.ConvertAll(x => x.NomCylindree);

или

lesCylindrees.DataSource = Cylindree.lesCylindreesTwoStroke;
lesCylindrees.DisplayMember = "NomCylindree";
1 голос
/ 14 января 2020

Это довольно просто. Пока он стоит, вы правильно используете linq для создания списка целых чисел, но затем элемент, который вы добавляете в comboBox, является результатом превращения этого ARRAY в строку. Если вы хотите добавить каждое целое число в массив, вы можете сделать следующее:

if (lesMoteurs.Text == "2T") {
    var intArr = Cylindree.lesCylindreesTwoStroke.Select(x => x.NomCylindree).ToArray();
    foreach (int i in intArr) {
        lesCylindrees.Items.Add(i.ToString());
    }
}

Альтернативно, коллекция имеет функцию AddRange, которая принимает массив:

lesCylindrees.Items.AddRange(Cylindree.lesCylindreesTwoStroke.Select(x => x.NomCylindree.ToString()).ToArray());
...