Загрузка данных



using System;
using System.Linq;
using System.Windows.Forms;

namespace TodoListApp
{
    public partial class Form1 : Form
    {
        private TodoModelContainer db;

        public Form1()
        {
            InitializeComponent();

            db = TodoMemoryContext.Create();

            btnAdd.Click += btnAdd_Click;
            btnComplete.Click += btnComplete_Click;
            btnDelete.Click += btnDelete_Click;

            LoadTasks();
        }

        private void LoadTasks()
        {
            dgvTasks.DataSource = null;
            dgvTasks.DataSource =
                db.TodoItems.ToList();
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            string title = txtTitle.Text.Trim();

            if (title == "")
            {
                MessageBox.Show("Введите задачу!");
                return;
            }

            TodoItem task = new TodoItem();
            task.Title = title;
            task.IsCompleted = false;
            task.CreatedAt = DateTime.Now;

            db.TodoItems.Add(task);
            db.SaveChanges();

            txtTitle.Clear();
            LoadTasks();
        }

        private void btnComplete_Click(object sender, EventArgs e)
        {
            TodoItem task = GetSelectedTask();

            if (task == null)
            {
                MessageBox.Show("Выберите задачу!");
                return;
            }

            task.IsCompleted = !task.IsCompleted;

            db.SaveChanges();
            LoadTasks();
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            TodoItem task = GetSelectedTask();

            if (task == null)
            {
                MessageBox.Show("Выберите задачу!");
                return;
            }

            db.TodoItems.Remove(task);
            db.SaveChanges();

            LoadTasks();
        }

        private TodoItem GetSelectedTask()
        {
            if (dgvTasks.CurrentRow == null)
                return null;

            return dgvTasks.CurrentRow.DataBoundItem
                as TodoItem;
        }

        protected override void OnFormClosed(FormClosedEventArgs e)
        {
            if (db != null)
                db.Dispose();

            base.OnFormClosed(e);
        }
    }
}