BindingSource dataGridView не обновляется - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день! Разбираюсь с BindingSource. Возник вопрос. вот у меня есть какой то простейший класс:
 public class TestData
    {
        private DateTime _datetime;
        private int _rndvalue;
        private string _uniquestring;
 
        public DateTime datetime
        {
            get
            {
                return _datetime;
            }
            set
            {
                _datetime = value;
            }
        }
 
        public int rndvalue
        {
            get
            {
                return _rndvalue;
            }
            set
            {
                _rndvalue = value;
            }
        }
 
        public string uniquestring
        {
            get
            {
                return _uniquestring;
            }
            set
            {
                _uniquestring = value;
            }
        }
 
    }
вот листинг класса формы:
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private BindingSource bs = new BindingSource();
        private List<TestData> testdata = new List<TestData>();
 
        private void Form1_Load(object sender, EventArgs e)
        {
            //создаем набор данных для теста
            for (int i = 0; i < 5; i++)
            {
                TestData td = new TestData();
                td.datetime = DateTime.Now;
                td.rndvalue = (new Random()).Next(0, 11);
                td.uniquestring = Guid.NewGuid().ToString();
                testdata.Add(td);
            }
            //делаем все настройки
            bs.DataSource = testdata;
            dataGridView1.DataSource = bs;
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            //добавляем еще 3 строки
            for (int i = 0; i < 3; i++)
            {
                TestData td = new TestData();
                td.datetime = DateTime.Now;
                td.rndvalue = (new Random()).Next(0, 11);
                td.uniquestring = Guid.NewGuid().ToString();
                testdata.Add(td);
            }
            //обновление происходит
            bs.ResetBindings(false);
        }
 
    }
При загрузке формы, мы создаем 5 элементов и они отображаются в dataGridView1. Тут все хорошо. При нажатии на кнопку я добавляю в List<TestData> testdata еще 3 элемента, но их отображение в dataGridView1 не происходит. Чтобы это произошло приходиться вызывать bs.ResetBindings(false); в конце. Но по моему, оно должно работать не так. Как только я изменил List<TestData> testdata, то dataGridView1 должен сам это заметить и тут же перерисовываться. Другими словами любое изменение List<TestData> testdata должно тут же (без дополнительных операций) отображается в dataGridView1. Или я не прав и этот метод все равно нужно вызывать?
Неужели ни у кого нет опыта работы с BindingSource?

Решение задачи: «BindingSource dataGridView не обновляется»

textual
Листинг программы
        private void button3_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < 3; i++)
            {
                TestData td = new TestData();
                td.datetime = DateTime.Now;
                td.rndvalue = (new Random()).Next(0, 11);
                td.uniquestring = Guid.NewGuid().ToString();
                bs.Add(td);
            }   
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.214 из 5