Skip to content

Instantly share code, notes, and snippets.

@serian
Created March 17, 2012 09:55
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save serian/2057222 to your computer and use it in GitHub Desktop.
Save serian/2057222 to your computer and use it in GitHub Desktop.
DataGridView BindingSource List オブジェクト バインド
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
namespace DataGridObj
{
/// <summary>
/// ユーザー定義のデータ型のリストをDataGridViewにバインドして表示する
/// </summary>
/// <remarks>
/// DataGridViewはVSのデザイナ画面でDnD
/// BindingDataSouceも同じく
/// あとは、自前で
/// </remarks>
public partial class Form1 : Form
{
private List<DataItem> dis;
public Form1()
{
InitializeComponent();
}
/// <summary>
/// ユーザー定義のデータ型のリストをDataGridViewにバインドして表示する
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_Load(object sender, EventArgs e)
{
dis = new List<DataItem>()
{
new DataItem{Name = "asdf", Status="aaa", Note="none"},
new DataItem{Name="bsdf", Status="bbb", Note="go"},
new DataItem{Name="csdf", Status="ccc", Note="went"}
};
/// BindingSourceはnewする
this.bindingSource1 = new BindingSource();
this.bindingSource1.DataSource = dis;
// this.dataGridView1 = new DataGridView();
///先に自動作成を切っておいてからバインド
this.dataGridView1.AutoGenerateColumns = false;
this.dataGridView1.DataSource = bindingSource1;
dataGridView1.Columns.Add(maketextColumn("Name", "名前"));
dataGridView1.Columns.Add(maketextColumn("Status", "ステータス"));
dataGridView1.Columns.Add(maketextColumn("Note", "ノート"));
this.Controls.Add(this.dataGridView1);
this.AutoSize = true;
}
/// <summary>
/// DataGridViewTextBoxColumnを作って返す
/// </summary>
/// <param name="src">該当するデータの名前</param>
/// <param name="name">グリッドのカラムに表示する名前</param>
/// <returns></returns>
private DataGridViewTextBoxColumn maketextColumn(string src, string name)
{
var col = new DataGridViewTextBoxColumn();
col.DataPropertyName = src;
col.Name = name;
return col;
}
/// <summary>
/// BindingSourceに新たなレコードを追加し、グリッドに表示する
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
// var src = this.bindingSource1.List;
bindingSource1.Add(new DataItem { Name = "dsdf", Status = "ddd", Note = "back"});
bindingSource1.EndEdit();
}
/// <summary>
/// DataGridView上のカーソル位置のレコードのNameを表示する
/// BindingSourceから取得
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
MessageBox.Show(((DataItem)bindingSource1[dataGridView1.CurrentCellAddress.Y]).Name);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment