今回は、明細(DataGridView)にコンボボックスを追加する方法を紹介していきます。
DataGridViewの使い方がわからない方は、先にこちらを参考にしてみてください。
それでは、さっそくやっていきましょう。
DataGridViewにコンボボックスを追加
DataGridViewにコンボボックスを作成するには、列を定義するときに、コンボボックス型で定義する必要があります。
DataGridViewComboBoxColumn colname = new DataGridViewComboBoxColumn();
このように、コンボボックスの列を定義していきましょう。
これだけだとわかりにくいので、例を紹介していきます。下記のような画面を作成してみましょう。
サンプルコードを記載していきます。
using System;
using System.Data;
using System.Windows.Forms;
namespace c_sharp
{
public partial class frmDgvCombobox : Form
{
public frmDgvCombobox()
{
InitializeComponent();
}
private void frmDgvCombobox_Load(object sender, EventArgs e)
{
//自動行追加 停止
dataGridView1.AllowUserToAddRows = false;
//列の定義
DataGridViewComboBoxColumn colname = new DataGridViewComboBoxColumn();
colname.Name = "name";
colname.HeaderText = "名前";
colname.Width = 80;
//コンボボックスの中身作成
DataTable dt = new DataTable();
dt.Columns.Add("name");
dt.Columns.Add("id");
DataRow dr = dt.NewRow();
dr["name"] = "ひろにも";
dr["id"] = "1";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["name"] = "たなか";
dr["id"] = "2";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["name"] = "すずき";
dr["id"] = "3";
dt.Rows.Add(dr);
colname.DataSource = dt;
colname.DisplayMember = "name";
colname.ValueMember = "id";
//列追加
dataGridView1.Columns.Add(colname);
//2行追加
dataGridView1.Rows.Add();
dataGridView1.Rows.Add();
//値設定_1列目
dataGridView1.Rows[0].Cells[0].Value = "1";
dataGridView1.Rows[1].Cells[0].Value = "2";
}
}
}
解説
20~24行目:コンボボックスの定義
26~44行目:コンボボックスに表示したいデータをDataTable型で作成し、コンボボックスに同期
コンボボックスの仕組みがわからない方は、通常のコンボボックスの使い方を参考にしてみてください。
54~55行目:ValueMemberの値を指定することで、コンボボックスの値を設定する
このソースを実行すると、明細にコンボボックスを作成することができます。
まとめ
今回は、明細にコンボボックスを作成する方法を紹介しました。
DataGridViewの使い方とコンボボックスの使い方がわかっていると理解しやすいと思います。
是非参考にしてみてください。