第130回 DataGridView の使い方(ToDoリストの作成)

公開日:2014-12-25

1. 概要

独り言によるプログラミング講座「第130回 DataGridView の使い方(ToDoリストの作成)」です。
ToDoリストを作成しながら、DataGridView の使い方を説明しています。

2. 動画


3. 動画中に書いたソース

Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Serialization;

namespace grid
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //★独り言によるプログラミング講座

            //■DataGridView の使い方(ToDoリストの作成)

            //ToDoリスト
            //日付
            //優先順位
            //内容

            load();
        }

        //保存ボタンクリック
        private void btnSave_Click(object sender, EventArgs e)
        {
            List<ToDo> list = new List<ToDo>();

            //DataGridView -> List<ToDo>
            for (int row = 0; row < grid.RowCount - 1; row++)
            {
                ToDo obj = new ToDo();
                obj.日付     = grid[0, row].Value.ToString();
                obj.優先順位 = grid[1, row].Value.ToString();
                obj.内容     = grid[2, row].Value.ToString();

                list.Add(obj);
            }

            //List<ToDo> -> XMLファイル
            XmlSerializer serializer = 
                new XmlSerializer(typeof(List<ToDo>));
            using (var fs = new FileStream("todo.xml", FileMode.Create))
            {
                serializer.Serialize(fs, list);
            }

        }

        private void load()
        {
            List<ToDo> list;

            //XMLファイル -> List<ToDo>
            XmlSerializer serializer =
                new XmlSerializer(typeof(List<ToDo>));
            using (var fs = new FileStream("todo.xml", FileMode.Open))
            {
                list = (List<ToDo>)serializer.Deserialize(fs);
            }

            //List<ToDo> -> DataGridView
            grid.RowCount = list.Count() + 1;

            for (int row = 0; row < grid.RowCount - 1; row++)
            {
                ToDo obj = list[row];
                grid[0, row].Value = obj.日付;
                grid[1, row].Value = obj.優先順位;
                grid[2, row].Value = obj.内容;
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            grid.AllowUserToAddRows = false;
            grid.ReadOnly = false;

            grid.Columns[0].HeaderText = "てすと";
            grid.Rows[0].HeaderCell.Value = "1";
            grid.Rows[1].HeaderCell.Value = "2";
            grid.Rows[2].HeaderCell.Value = "3";
        }
    }

    public class ToDo
    {
        public String 日付;
        public String 優先順位;
        public String 内容;
    }

}