BindingSource dataGridView не обновляется - C#
Формулировка задачи:
Добрый день!
Разбираюсь с BindingSource. Возник вопрос.
вот у меня есть какой то простейший класс:
вот листинг класса формы:
При загрузке формы, мы создаем 5 элементов и они отображаются в dataGridView1. Тут все хорошо. При нажатии на кнопку я добавляю в List<TestData> testdata еще 3 элемента, но их отображение в dataGridView1 не происходит. Чтобы это произошло приходиться вызывать bs.ResetBindings(false); в конце. Но по моему, оно должно работать не так. Как только я изменил List<TestData> testdata, то dataGridView1 должен сам это заметить и тут же перерисовываться. Другими словами любое изменение List<TestData> testdata должно тут же (без дополнительных операций) отображается в dataGridView1. Или я не прав и этот метод все равно нужно вызывать?
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); } }
Неужели ни у кого нет опыта работы с 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); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д