Отображение элемента из списка в текстовое поле

#c# #winforms

#c# #winforms

Вопрос:

Я пытаюсь отобразить элемент из CSV-файла в listbox (эта часть работает), а затем отобразить отдельные части этого элемента в отдельных ярлыках.

 public partial class InventoryForm : Form
    {
        public InventoryForm()
        {
            InitializeComponent();
        }

public List<ItemsList> itemsLists(string csvPath)
        {
            var query = from l in File.ReadAllLines(csvPath)
                        let data = l.Split('|')
                        select new ItemsList
                        {
                            Name = data[0],
                            Type = data[1],
                            DMGTyp = data[2],
                            DMG = data[3],
                            Weight = int.Parse(data[4]),
                            Price = int.Parse(data[5]),
                            Description = data[5]
                        };
            return query.ToList();
        }
        private void btnBrowse_Click(object sender, EventArgs e)
        {
            OpenFileDialog filePath = new OpenFileDialog();
            filePath.ShowDialog();
            textBox1.Text = filePath.FileName;
        }

        private void btnLoad_Click(object sender, EventArgs e)
        {
            listBox1.DataSource = itemsLists(textBox1.Text);
        }

        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            //to do show individual pieces in labels
            
        }
    public class ItemsList
    {
        public string Name { get; set; }
        public string Type { get; set; }
        public string DMGTyp { get; set; }
        public string DMG { get; set; }
        public int Weight { get; set; }
        public int  Price { get; set; }
        public string Description { get; set; }
    }
}



 

Элементы разбиты на 6 частей, а в окне списка отображается только имя элемента, но я хочу, чтобы на ярлыке отображались остальные свойства элемента. Любые подсказки о том, как это сделать?

Комментарии:

1. Добавьте привязку к данным к меткам, установив привязку к соответствующему свойству ItemsList класса. Выбранный ItemsList объект возвращается ListBox.SelectedItem . Кстати, вы отрезали некоторые фрагменты кода и оставили ItemsList определение класса. Используйте BindingSource, чтобы связать ваши List<ItemsList> объекты с источником данных ListBox и использовать его в качестве источника привязок к данным.

2. ItemList создан ли класс вами? Вы должны создать переменные уровня формы List<ItemsList> items и заполнить список из файла CSV… вы можете загрузить список, item и когда пользователь выбирает элемент из списка, вы можете использовать запрос с items помощью LINQ, чтобы получить элемент на основе выбранного имени. а затем отобразите другие свойства этого элемента в метках.

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

4. Объявите BindingSource как поле: private BindingSource listSource = null; … после того, как вы создали список … listSource = new BindingSource([Your List], null); listBox1.DisplayMember = "[The Name of the Property used to present the List]"; listBox1.DataSource = listSource; label1.DataBindings.Add("Text", listSource, "Name", false, DataSourceUpdateMode.OnPropertyChanged); label2.DataBindings.Add(...) [...] . После этого все происходит автоматически, нет необходимости обрабатывать события.