Edited at

DataGridViewとデータバインド

More than 1 year has passed since last update.


データバインドのやり方

DataGridViewとListをバインドし、DataGridViewの内容変更をListに反映する。

こうすることで、DataGridViewのイベント内でListを更新するコードを書く必要がなくなる。


バインドするクラスの作成

DataGridViewにバインドするクラスを作成する。

今回は、ToDoアプリを想定し、ToDoを管理するItemクラスを作成した。


Item.cs

    public class Item

{
public bool Done { get; set; }

public string Name { get; set; }

public string Detail { get; set; }
}



ビルド

ここで一度ビルドする。

ItemクラスをVisualStudioに認識させる。


BindingSourceの作成

DataGridViewとItemクラスを関連付ける。

BidingSouceを作成することで、DataGridViewにItemクラスのプロパティが列に追加される。



  1. DataGridView コントロールの右上隅のスマート タグ グリフ (スマート タグ グリフ) をクリックします。

  2. [データ ソースの選択] オプションのドロップダウン矢印をクリックします。

  3. プロジェクトのデータ ソースがまだない場合は、[プロジェクト データ ソースの追加] をクリックし、ウィザードに示された手順に従います。


datasource.PNG

dataobject.PNG

※Itemクラスが表示されない場合、ビルドを忘れている。

datagridview2.PNG


Itemインスタンスの設定

BidingSouceのDataSourceにItemインスタンスを設定する。


Form1.cs

    public partial class Form1 : Form

{
private List<Item> _tasks;

public Form1()
{
InitializeComponent();

_tasks = new List<Item>();

Item taskItem = new Item() { Done = true, Name = "a", Detail = "aaaaaaaaaa" };
_tasks.Add(taskItem);

itemBindingSource.DataSource = _tasks;
}
}


DataGridViewで行を追加すると、自動的に_tasksが更新されるようになった。

datagridview3.PNG


参考