1

Тема: Допоможіть розібратися з DataGridView WinForms

Вітаю! Мені потрібно зробити так, щоб користувач у TextBox'и вводив дані, ці дані додавалися до списку структур List<> і виводилися на DataGridView, і далі користувач міг управляти цими даними(видаляти за індексом, додавати за індексом і т.д.). Додавання даних до списку я зміг зробити, аби як зміг додати їх на DataGridView (проблемою є те, що у мене не виходить змінити назви стовпчиків, бо вони прив'язані через DataSource до списку), але після маніпулювання з даними, вони в списку начебто правильно змінюються, а ось DataGridView не оновлюється. Допоможіть будь ласка вирішити цю проблему.

using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace TransportSchedule
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            dataGridView.DataSource = transList;
        }

        public struct Transport
        {
            public string CityDeparture { set; get; }
            public string CityDestination { set; get; }
            public string DateDeparture { set; get; }
            public string DateDestination { set; get; }
            public double Price { set; get; }

            public Transport(string cityDeparture, string cityDestination, string dateDeparture, string dateDestination, double price)
            {
                CityDeparture = cityDeparture;
                CityDestination = cityDestination;
                DateDeparture = dateDeparture;
                DateDestination = dateDestination;
                Price = price;
            }
        }

        List<Transport> transList = new List<Transport>();

        private void addButton_Click(object sender, EventArgs e)
        {
                 Transport transport = new Transport(cityDepartureBox.Text, cityDestinationBox.Text, dateDepartureBox.Text, dateDestinationBox.Text, Double.Parse(priceBox.Text));
                 transList.Add(transport);
                 dataGridView.DataSource = null;
                 dataGridView.DataSource = transList;
        }
            

        private void deleteButton_Click(object sender, EventArgs e)
        {
                int index = Convert.ToInt32(deleteIndexBox.Text) - 1;
                transList.RemoveAt(index);
        }

        private void clearButton_Click(object sender, EventArgs e)
        {
            DialogResult answer = MessageBox.Show("Ви дійсно хочете очистити всі дані?\nЦю дію неможливо відминити!", "Попередження", MessageBoxButtons.YesNo);
            if(answer == DialogResult.Yes)
            {
                transList.Clear();
            }
        }
    }
}

2

Re: Допоможіть розібратися з DataGridView WinForms

На шарпі не програмую, але List - це просто дані, без подій. А вам треба щось на кшталт BindingList поставити, щоб на зміну реагувало.

Подякували: leofun01, BogdanS2