*

[C#]DataGridViewにプロパティを利用しながら配列をバインドする。

公開日: : C#, プログラミング

DataGridView

C#のFormにデータを表示するのに便利なコントロールがあります。
データを表示するときに利用するのですが、DataGridViewというものです。

具体的には、こんなやつです。
DataGridView Csharp

ちなみに↑の画像のコードはこんな感じです。

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

			dataGridView1.Columns.Add("Name", "名前");
			dataGridView1.Rows.Add("Tanaka");
			dataGridView1.Rows.Add("Yamada");
			dataGridView1.Rows.Add("Wannabe");
		}
	}
}

このコードだと、いちいち列名をdataGridView1.Columns.Add(“Name”, “名前”);というように列を一つ一つ設定しなくてはいけないので面倒です。

面倒なことは何かしら解決方法はあるもので、その解決方法の備忘録です。

具体的にはどうする

具体的にはデータを保存するクラスを作成し、それらにプロパティを設定します。
そしてそのクラスを配列にして、DataGridViewのDataSourceにセットします。
するとプロパティを利用して、列名などを自動で作成してくれます。

実際にコーディングをしていきましょう。

データを保存するクラスの作成

まずはデータを保存するクラスを作成します。
今回は名前と年齢、性別をデータとして保存することにしましょう。

namespace TestProject {
	class Person {
		public string Name { get; set; }
		public int Age { get; set; }
		public int Gender { get; set; } // 0 = default, 1 = male, 2 = female

		public Person(string name, int age, int gender) {
			this.Name = name;
			this.Age = age;
			this.Gender = gender;
		}
	}
}

こんな感じです。

データ保存の配列を作成、datasourceへのセット

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

			Person[] persons = {
								   new Person("Tanaka", 24, 1),
								   new Person("Yamada", 22, 1),
								   new Person("Wannabe", 21, 2),
							   };

			dataGridView1.DataSource = persons;
		}
	}
}

まんまですね。
データを格納する配列をとりあえず手動で用意して、そのままDataSourceにぶっこんだだけです。

実行結果

DataGridView CSharp

解説

DataGridViewのDataSourceは設定されたクラスのプロパティをパースして、フィールド名をカラム名に変換してくれるようです。
ダブルバイトな名称をカラム名にしたい場合はプロパティ名をダブルバイトにはしたくないので、

dataGridView1.Columns[0].HeaderText = "名前";

みたいな行を追加しなくてはいけなかったりします。
(設定する方法があるんでしょうか?)

とはいえ、配列ごとdatasourceとして設定した方が楽なのでお勧めだとは思います。

ad

関連記事

Unity_

[Unity]Unity4.6 UIチュートリアル Lesson6.UI Events and Event Triggers 日本語要約

前回の続き。 ついにずっと画面で見えていた謎のEventSystemに触れます。 なんか

記事を読む

Unity_

[Unity]Unity2Dチュートリアル 同じ色で繋がったパズルを消去する ソース解説

◆全文 using UnityEngine; using System.Collecti

記事を読む

logo

[Unity]コードリファレンス ソケット通信の開始して接続して切断する。

オンラインゲームを作るためにはソケット通信が必要です。 今回はいきなりソースから。解説は下の方に。

記事を読む

wannabenote

[Excel, C#]C#でExcelの値の変更イベントを取得する。

Excelのイベント取得 処理の流れ 対象のワークシートを取得する。 イベントハンドラ

記事を読む

logo

[C#]BinaryFormatterなどSerializerいろいろ書いておく

github始めました -> わなびのgithub それは置いておいて、BinaryForma

記事を読む

wannabenote

[Excel,C#]C#でExcelにデータを一括出力する

大体いつも忘れるこのやり方。 Excelにデータを出力する 方法論 単純な方法ではデータを一行

記事を読む

Unity_

[Unity]Unity2Dチュートリアル 直線で3つ同色のパズルを消去する

前回の続き。 パズドラじゃなくて、パズドラ+ぷよぷよの謎パズルを作ってしまったので、 今回は

記事を読む

PDFClearBlankToText

[C#, iTextsharp]PDFClearBlankToText PDFのテキストを読み込んで空白削除する

使用は自己責任でお願いします。 ◆概要 前回のBlankClearのあとにPDFからコピペが

記事を読む

Excel vsto 印刷設定 print setting

[C#, VSTO]Excelの印刷設定をする

印刷設定 VSTO(Visual Studio Tool for Office)Excelなんぞを

記事を読む

unity debug

[Unity]MonoDevelopのデバッグの仕方

コメントで頂いた質問を打破するためにデバッグの仕方でも書いてみます。 まずは、プロジェクトを開

記事を読む

ad

Comment

  1. 通りすがり より:

    本気で通りすがりなのでコメントに返信もらっても無理ですよw

    列名、HeaderTextのところですが、
     dataGridView1.Columns[0].HeaderText = “名前”;
    でなくても可能です。
    具体的には、DisplayNameAttributeをプロパティに付けてやればOKです。
    例えば、
    class Person
    {
    [DisplayName("なまえ")]
    public string Name { get; set; }

    みたいな感じです。
    DataGridViewだとその他にも認識する属性がたくさんあったはず。。

  2. わな び より:

    コメント有難うございます。
    通りすがりでも大変嬉しいです。

    完全に勉強不足でした。
    他の属性も調べて改めて記事を直します!

わな び にコメントする コメントをキャンセル

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

ad

  •  Auther;わなび

     「オープン系得意だよね? 俺のPCの調子悪いんだけど」という無茶振りから解き放たれゲームエンジニアに。
    C#とかUnityを扱います。
    Twitterフォロー大歓迎です。
    githubアカウント→wannabenote
  • follow us in feedly
PAGE TOP ↑