C# を使用して DataGridView に行を追加する
この記事では、C# の DataGridView
について学習します。 まず、DataGridView
と、なぜテーブル、つまり行と列にデータを格納する必要があるのかについて考えてみましょう。
次に、グリッドに行を追加するさまざまな方法について説明します。
これまで、ほとんどの開発者はデータをファイルに保存していました。 必要なときはいつでも、すべてのファイルを順番に検索する必要があり、時間がかかりました。
テーブルは、この問題を解決するために考案されました。
テーブルでは、データは行と列に順番に整理された方法で格納されます。 テーブルは、時間をかけずに、行と列をすばやく効率的に読みやすくします。
グリッドは、セル、つまり行と列の形式の表の形式でもあります。
C#
の DataGridView
Visual Studio 2008 には、Windows フォーム コントロールで利用できる DataGridView
コントロールがあります。 このコントロールは、以前のバージョンと比較して、データを管理するための広範な機能を追加しました。
このコントロールは、強度に加えて、行と列の形式でデータを表示する柔軟性を提供します。
DataGridView
コントロールを使用して、少量のデータの読み取り専用ビューを表示できます。 大規模なデータ セットに使用して、編集可能なビューを表示することもできます。
大小のデータ セットに加えて、このコントロールを使用してマスターの詳細を表示することもできます。
DataGridView
コントロールは、ビューおよび編集用のさまざまなデータ ソースで使用できます。 このコントロールには、このコントロールにデータをバインドするためのシンプルで直感的な方法があります。
複数のテーブルをデータ ソースにバインドするには、DataMember
のプロパティに文字列として設定します。
DataGridView
コントロールは、次のインターフェイスを実装する任意のクラス インスタンスにバインドします。
IList
インターフェイスには 1 次元配列も含まれます。IListSource
インターフェイス。 例として、DataSet
クラスとDataTable
があります。BindingList<(Of <(T>)>)
クラスのようなIBindingList
インターフェイス。BindingSource
クラスと同様のIBindingListView
インターフェイス。
DataGridView
コントロールは、上記のインターフェイスによって記述されたオブジェクトのパブリック属性にデータをバインドできます。 DataGridView
コントロールは主に BindingSource
をアタッチしますが、BindingSource
は別の参照データ ソースまたはビジネス オブジェクトにバインドされます。
このコントロールは、ICustomTypeDescriptor
インターフェイスによって返されるプロパティ コレクションへのデータ バインディングもサポートします。
C# の DataGridView
は、データをカスタマイズ可能なグリッド、つまり Windows フォームを使用した表形式で表示します。 System.Windows.Forms
名前空間の一部です。
グリッドを使用する構文を以下に示します。
[System.ComponentModel.ComplexBindingProperties("DataSource", "DataMember")]
[System.Windows.Forms.Docking(System.Windows.Forms.DockingBehavior.Ask)]
public class DataGridView : System.Windows.Forms.Control, System.ComponentModel.ISupportInitialize
DataGridView
クラスを使用して、セル、行、列、および境界線をカスタマイズできます。 DataGridView
コントロールは、データ ソースの有無にかかわらずデータを表示します。
それでもデータ ソースを提供する必要がある場合は、行と列のプロパティによって DataGridView
に行と列を追加できます。 DataGridView
rows
および cols
オブジェクトを使用して行と列のコレクションにアクセスすることもできます。
この記事では、主にデータ グリッド ビューに行を追加することに焦点を当てているため、いくつかの方法を見つけてみましょう。
C#
で DataGridView
に行を追加する
DataGridView
に行を追加する複数の方法について説明します。 各方法でコーディングの詳細を示します。
行の手動追加
DataGridView
に行を追加する最も簡単な方法は、データ グリッド ビューで Rows.Add()
メソッドを使用して手動で行うことができます。 次の例では、MyForm.cs
クラスで、行を表示する add_Data
ボタン関数が記述されています。
グリッドとグリッドを表示するボタンを使用して、WPF FormDesign
でフォーム デザインを作成できます。
using System;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Manual_Addition_of_Rows_Datagrid {
public partial class MyForm : FormDesign {
public MyForm() {
IntializeComponent();
}
private void add_Data(object sender, EventArgs e) {
dataGridView1.ColumnCount = 3;
dataGridView1.Columns[0].Name = "ID";
dataGridView1.Columns[1].Name = "Course Name";
dataGridView1.Columns[2].Name = "Marks";
string[] row = new string[] { "1", "OOP", "75" };
dataGridView1.Rows.Add(row);
row = new string[] { "2", "DSA", "86" };
dataGridView1.Rows.Add(row);
row = new string[] { "3", "AOA", "67" };
dataGridView1.Rows.Add(row);
}
}
}
Columns
コレクションを使用して DataGridView
コントロールの列にアクセスし、Rows
コレクションを使用して DataGridView
コントロールの行にアクセスすることもできます。
DataGridView
がどのデータ テーブルまたはデータ セットにもバインドされていない場合は、次のコードを使用して新しい行を追加できます。
var index = dataGridView1.Rows.Add();
dataGridView1.Rows[index].Cells["Column1"].Value = "Column1 value";
dataGridView1.Rows[index].Cells["Column2"].Value = 9.5;
新しい行を動的に追加する
次の例は、Windows アプリケーション フォーム Form1
のグリッドに列と行を動的に追加する方法を示しています。 プロジェクトを作成したら、ツールボックスから dataGridView
を Form1.cs[Design]
に追加し、グリッドの右上のボタンからコンテナー オプションのドックをクリックします。
Form1.cs
ファイルに移動し、フォームにいくつかの変更を加えます。 まず、以下のように名前空間を追加します。
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AddingRowsColumnsInGrid {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
public void updateGrid() {
// Update the data grid view here dynamically
// Add columns
dataGridView1.ColumnCount = 4;
dataGridView1.Columns[0].Name = "Bus Id";
dataGridView1.Columns[1].Name = "Bus Name";
dataGridView1.Columns[2].Name = "Bus Model";
dataGridView1.Columns[3].Name = "Bus Color";
// Now adding rows
ArrayList arrRow = new ArrayList();
arrRow.Add("1");
arrRow.Add("School bus");
arrRow.Add("2000");
arrRow.Add("Yellow");
dataGridView1.Rows.Add(arrRow.ToArray());
arrRow = new ArrayList();
arrRow.Add("2");
arrRow.Add("Speedo bus");
arrRow.Add("2014");
arrRow.Add("Red");
dataGridView1.Rows.Add(arrRow.ToArray());
arrRow = new ArrayList();
arrRow.Add("3");
arrRow.Add("Metro bus");
arrRow.Add("205");
arrRow.Add("Orange");
dataGridView1.Rows.Add(arrRow.ToArray());
}
private void Form1_Load_1(object sender, EventArgs e) {
updateGrid();
}
}
}
上記のコードでは、フォーム コンポーネントを初期化し、Form1_Load_1
関数を作成してグリッドで発生したオブジェクトとイベントを処理し、列と行を追加する場所に updateGrid()
を渡すことがわかります。 オブジェクトをグループに格納して操作できるように、グリッド内の行が ArrayList
オブジェクトに追加されました。
上記のコードの出力を以下に示します。
データ テーブルを使用してグリッドに行を追加する
C# WinForm では、データをグリッドに追加する方法が複数あります。 簡単に言えば、データテーブルは主にデータベースで使用されるオブジェクトとして定義できます。
これは、行と列を持つデータベース テーブルのようなものです。 データ テーブルの詳細については、Microsoft の記事を参照してください。
以下の例では、最初にデータ テーブル オブジェクトを作成し、データ テーブルの組み込みプロパティを使用してグリッドに列と行を追加したことがわかります。 データ ソースはデータ テーブルのプロパティでもあり、主に DataGridView
のデータを取得または設定するために使用されます。
テキストボックスにデータを入力した後に Add_Row
を押すと、データ ソースはデータをグリッドに入力します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SampleGridData {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
DataTable dt = new DataTable();
private void Form1_Load(object sender, EventArgs e) {
dt.Columns.Add("Emp Id", typeof(int));
dt.Columns.Add("Ename", typeof(string));
dt.Columns.Add("Company", typeof(string));
dt.Columns.Add("Email", typeof(string));
dt.Rows.Add(1, "Alexa", "Apple", "alexa123@apple.io");
dt.Rows.Add(2, "Hugh Jack", "Microsoft", "hugh345@microsoft.com");
dt.Rows.Add(3, "Jacob", "HP", "jacob678@hp.io");
dt.Rows.Add(4, "Ariana", "Huawive", "arina86@huaweiv.com");
dataGridView1.DataSource = dt;
}
private void button1_Click(object sender, EventArgs e) {
dt.Rows.Add(textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text);
dataGridView1.DataSource = dt;
}
}
}
上記のコードの出力は次のとおりです。
Clone
メソッドによる行の追加
C# では、clone
メソッドを使用してグリッドに行を追加できます。 クローンとは、ある DataGridView
から別の DataGridView
にデータをコピーして、グリッドに行と列を追加することを意味します。
その主な目的は、あるグリッドから別のグリッドにデータをコピーすることですが、行を追加できます。 例えば:
DataGridViewRow myRow = (DataGridViewRow)myGrid.Rows[0].Clone();
myRow.Cells[2].Value = "My first Grid";
myRow.Cells[4].Value = 23.5;
myGrid.Rows.Add(myRow);
上記のコードは、グリッドに追加される 1 行の値を表しています。 ただし、セル内の行の配置が改善されるため、行テンプレートを作成することもできます。
例えば:
DataGridViewRow r1 = (DataGridViewRow)myGrid1.RowTemplate.Clone();
r1.CreateCells(myGrid1, "col1", "col2", "col3");
myGrid1.Rows.Add(row);
データ グリッド ビューに行を動的に追加する方法はいくつかありますが、いくつかの例を次に示します。
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AddingRowsColumnsInGrid {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
public void updateGrid() {
dataGridView1.ColumnCount = 4;
dataGridView1.Columns[0].Name = "Bus Id";
dataGridView1.Columns[1].Name = "Bus Name";
dataGridView1.Columns[2].Name = "Bus Model";
dataGridView1.Columns[3].Name = "Bus Color";
dataGridView1.AllowUserToAddRows = true;
DataGridViewRow row = (DataGridViewRow)dataGridView1.Rows[0].Clone();
row.Cells[0].Value = "1";
row.Cells[1].Value = "School bus";
row.Cells[2].Value = "2000";
row.Cells[3].Value = "Yellow";
dataGridView1.Rows.Add(row);
row = (DataGridViewRow)dataGridView1.Rows[0].Clone();
row.Cells[0].Value = "4";
row.Cells[1].Value = "Speedo bus";
row.Cells[2].Value = "2014";
row.Cells[3].Value = "Red";
dataGridView1.Rows.Add(row);
row = (DataGridViewRow)dataGridView1.Rows[0].Clone();
row.Cells[0].Value = "3";
row.Cells[1].Value = "Metro bus";
row.Cells[2].Value = "2015";
row.Cells[3].Value = "Orange";
dataGridView1.Rows.Add(row);
row = (DataGridViewRow)dataGridView1.Rows[0].Clone();
row.Cells[0].Value = "4";
row.Cells[1].Value = "Daewoo bus";
row.Cells[2].Value = "2021";
row.Cells[3].Value = "Blue";
dataGridView1.Rows.Add(row);
}
private void Form1_Load_1(object sender, EventArgs e) {
updateGrid();
}
}
}
理解しやすいので、この例では上記のコードを使用しました。 DataGridView
では、clone
プロパティを使用して行とそのプロパティをコピーし、行のコピーに元の行を入力します。
上記のコードでは、clone
メソッドを使用して行をコピーしました。 clone
メソッドの詳細については、この ページ にアクセスしてください。
上記のコードの出力は次のとおりです。
この ページ にアクセスして、データ グリッド ビューでの行の追加について読むことができます。 グリッドに行を追加することにまだあいまいな点がある場合は、この 記事 も読むことができます。
DataGridView
について詳しく説明しました。 DataGridView
にデータをバインドする複数の方法について説明しました。
データ グリッド ビューとその機能についてよく理解し、さまざまなグリッド メソッドを使用して行を追加し、そのプロパティを設定することに慣れていることを願っています。