Загрузка данных
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Windows.Forms;
namespace WindowsFormsApplication4
{
public class TodoItem
{
public int Id { get; set; }
public string Title { get; set; }
public bool IsCompleted { get; set; }
public DateTime CreatedAt { get; set; }
}
public partial class Form1 : Form
{
private List<TodoItem> tasks = new List<TodoItem>();
private BindingList<TodoItem> view;
private int nextId = 1;
private TextBox txtTitle;
private Button btnAdd;
private Button btnComplete;
private Button btnDelete;
private DataGridView dgvTasks;
public Form1()
{
InitializeComponent();
// Создаём элементы интерфейса программно
txtTitle = new TextBox();
txtTitle.SetBounds(10, 10, 250, 25);
btnAdd = new Button();
btnAdd.Text = "Добавить";
btnAdd.SetBounds(270, 10, 100, 25);
btnAdd.Click += BtnAdd_Click;
btnComplete = new Button();
btnComplete.Text = "Выполнено";
btnComplete.SetBounds(380, 10, 100, 25);
btnComplete.Click += BtnComplete_Click;
btnDelete = new Button();
btnDelete.Text = "Удалить";
btnDelete.SetBounds(490, 10, 100, 25);
btnDelete.Click += BtnDelete_Click;
dgvTasks = new DataGridView();
dgvTasks.SetBounds(10, 45, 650, 350);
dgvTasks.AutoGenerateColumns = true;
dgvTasks.ReadOnly = true;
dgvTasks.SelectionMode =
DataGridViewSelectionMode.FullRowSelect;
dgvTasks.MultiSelect = false;
dgvTasks.AutoSizeColumnsMode =
DataGridViewAutoSizeColumnsMode.Fill;
Controls.Add(txtTitle);
Controls.Add(btnAdd);
Controls.Add(btnComplete);
Controls.Add(btnDelete);
Controls.Add(dgvTasks);
view = new BindingList<TodoItem>(tasks);
dgvTasks.DataSource = view;
Text = "Список дел";
Width = 700;
Height = 450;
StartPosition = FormStartPosition.CenterScreen;
}
private void BtnAdd_Click(object sender, EventArgs e)
{
string title = txtTitle.Text.Trim();
if (title.Length == 0)
{
MessageBox.Show("Введите название задачи.");
return;
}
tasks.Add(new TodoItem
{
Id = nextId++,
Title = title,
IsCompleted = false,
CreatedAt = DateTime.Now
});
RefreshTasks();
txtTitle.Clear();
}
private TodoItem GetSelectedTask()
{
if (dgvTasks.CurrentRow == null)
return null;
return dgvTasks.CurrentRow.DataBoundItem as TodoItem;
}
private void BtnComplete_Click(object sender, EventArgs e)
{
TodoItem task = GetSelectedTask();
if (task == null)
{
MessageBox.Show("Выберите задачу.");
return;
}
task.IsCompleted = !task.IsCompleted;
RefreshTasks();
}
private void BtnDelete_Click(object sender, EventArgs e)
{
TodoItem task = GetSelectedTask();
if (task == null)
{
MessageBox.Show("Выберите задачу.");
return;
}
tasks.Remove(task);
RefreshTasks();
}
private void RefreshTasks()
{
int selectedId = -1;
TodoItem selected = GetSelectedTask();
if (selected != null)
selectedId = selected.Id;
view.ResetBindings();
for (int i = 0; i < dgvTasks.Rows.Count; i++)
{
TodoItem item =
dgvTasks.Rows[i].DataBoundItem as TodoItem;
if (item != null && item.Id == selectedId)
{
dgvTasks.CurrentCell =
dgvTasks.Rows[i].Cells[0];
break;
}
}
}
}
}