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;
namespace WindowsFormsApplication1
{
public partial class frmMain : Form
{
/// <summary>
/// コンストラクタ
/// </summary>
public frmMain()
{
// コンポーネントの初期化
InitializeComponent();
Init();
}
/// <summary>
/// 初期化処理
/// </summary>
private void Init()
{
DataGridView grdMain = new DataGridView();
// グリッドを追加
this.Controls.Add(grdMain);
InitGrd(grdMain);
}
/// <summary>
/// グリッドの初期化処理
/// </summary>
/// <param name="grd"></param>
private void InitGrd(DataGridView grd)
{
// グリッドの位置と大きさを設定
grd.SetBounds(0, 0, this.Width, this.Height);
// 行の追加不可
grd.AllowUserToAddRows = false;
// 行ヘッダ非表示
grd.RowHeadersVisible = false;
// チェックボックス列を追加
grd.Columns.Add(new DataGridViewCheckBoxColumn());
grd.Rows.Add();
}
}
}
- チェックボックス列がクリックされたらメッセージを出力
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;
namespace WindowsFormsApplication1
{
public partial class frmMain : Form
{
/// <summary>
/// コンストラクタ
/// </summary>
public frmMain()
{
// コンポーネントの初期化
InitializeComponent();
Init();
}
/// <summary>
/// 初期化処理
/// </summary>
private void Init()
{
DataGridView dgvMain = new DataGridView();
// グリッドを追加
this.Controls.Add(dgvMain);
InitGrd(dgvMain);
}
/// <summary>
/// グリッドの初期化処理
/// </summary>
/// <param name="dgv"></param>
private void InitGrd(DataGridView dgv)
{
// グリッドの位置と大きさを設定
dgv.SetBounds(0, 0, this.Width, this.Height);
// 行の追加不可
dgv.AllowUserToAddRows = false;
// 行ヘッダ非表示
dgv.RowHeadersVisible = false;
// チェックボックス列を追加
DataGridViewCheckBoxColumn col = new DataGridViewCheckBoxColumn();
dgv.Columns.Add(col);
dgv.Rows.Add();
dgv.Rows.Add();
dgv.CellContentClick += dgvMain_CellContentClick;
}
private void dgvMain_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
//DataGridViewCheckBoxColumnならば、チェックボックス列がクリックされた
if (dgv.Columns[e.ColumnIndex] is DataGridViewCheckBoxColumn)
{
MessageBox.Show(string.Format("{0}行のチェックボックスがクリックされました。", e.RowIndex.ToString()));
}
}
}
}

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;
namespace WindowsFormsApplication1
{
public partial class frmMain : Form
{
/// <summary>
/// コンストラクタ
/// </summary>
public frmMain()
{
// コンポーネントの初期化
InitializeComponent();
Init();
}
/// <summary>
/// 初期化処理
/// </summary>
private void Init()
{
DataGridView grdMain = new DataGridView();
// グリッドを追加
this.Controls.Add(grdMain);
InitGrd(grdMain);
}
/// <summary>
/// グリッドの初期化処理
/// </summary>
/// <param name="grd"></param>
private void InitGrd(DataGridView grd)
{
// グリッドの位置と大きさを設定
grd.SetBounds(0, 0, this.Width, this.Height);
// 行の追加不可
grd.AllowUserToAddRows = false;
// 行ヘッダ非表示
grd.RowHeadersVisible = false;
// コンボボックス列を追加
grd.Columns.Add(new DataGridViewComboBoxColumn());
// コンボボックスの初期化
InitCmb((DataGridViewComboBoxColumn)grd.Columns[0]);
grd.Rows.Add();
// コンボの初期値
grd.Rows[0].Cells[0].Value = "02";
}
/// <summary>
/// コンボボックスのリスト項目を設定
/// </summary>
/// <param name="col"></param>
private void InitCmb(DataGridViewComboBoxColumn col)
{
DataTable dt = new DataTable();
DataRow row;
string strValMember = "val";
string strDisMember = "dis";
dt.Columns.Add(strValMember);
dt.Columns.Add(strDisMember);
row = dt.NewRow();
row[strValMember] = "01";
row[strDisMember] = "項目①";
dt.Rows.Add(row);
row = dt.NewRow();
row[strValMember] = "02";
row[strDisMember] = "項目②";
dt.Rows.Add(row);
col.DataSource = dt;
col.ValueMember = strValMember;
col.DisplayMember = strDisMember;
}
}
}
- コンボボックス列の値を変更した場合に、メッセージを出力する。

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;
namespace WindowsFormsApplication1
{
public partial class frmMain : Form
{
private DataGridView dgvMain = new DataGridView();
private DataGridViewComboBoxEditingControl dgvCmb;
/// <summary>
/// コンストラクタ
/// </summary>
public frmMain()
{
// コンポーネントの初期化
InitializeComponent();
Init();
}
/// <summary>
/// 初期化処理
/// </summary>
private void Init()
{
// グリッドを追加
this.Controls.Add(dgvMain);
this.Initdgv();
}
/// <summary>
/// グリッドの初期化処理
/// </summary>
private void Initdgv()
{
DataGridViewComboBoxColumn colCmb = new DataGridViewComboBoxColumn();
// グリッドの位置と大きさを設定
this.dgvMain.SetBounds(0, 0, this.Width, this.Height);
// 行の追加不可
this.dgvMain.AllowUserToAddRows = false;
// 行ヘッダ非表示
this.dgvMain.RowHeadersVisible = false;
// コンボボックスの初期化
this.InitColCmb(colCmb);
// コンボボックス列を追加
this.dgvMain.Columns.Add(colCmb);
// 行追加
this.dgvMain.Rows.Add();
this.dgvMain.Rows.Add();
// イベントハンドラの追加
this.dgvMain.EditingControlShowing += dgvMain_EditingControlShowing;
this.dgvMain.CellEndEdit += dgvMain_CellEndEdit;
}
/// <summary>
/// セルを編集するためのコントロールが表示されたときの処理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dgvMain_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
// DataGridViewのコンボボックス編集コントロールが表示されたか
if (e.Control is DataGridViewComboBoxEditingControl)
{
// イベントハンドラの開放用にDataGridViewComboBoxEditingControlを保持
this.dgvCmb = (DataGridViewComboBoxEditingControl)e.Control;
// SelectedIndexChangedイベントハンドラを追加
this.dgvCmb.SelectedIndexChanged += dgvCmb_SelectedIndexChanged;
}
}
/// <summary>
/// セルの編集完了
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dgvMain_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if (sender is DataGridView)
{
// SelectedIndexChangedイベントハンドラを開放
this.dgvCmb.SelectedIndexChanged -= dgvCmb_SelectedIndexChanged;
}
}
/// <summary>
/// コンボの選択値変更時の処理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dgvCmb_SelectedIndexChanged(object sender, EventArgs e)
{
if (sender is DataGridViewComboBoxEditingControl)
{
DataGridViewComboBoxEditingControl cmb = (DataGridViewComboBoxEditingControl)sender;
MessageBox.Show(string.Format("{0} が選択されました。", cmb.Text));
}
}
/// <summary>
/// コンボボックスのリスト項目を設定
/// </summary>
/// <param name="col"></param>
private void InitColCmb(DataGridViewComboBoxColumn col)
{
DataTable dt = new DataTable();
DataRow row;
string strValMember = "val";
string strDisMember = "dis";
dt.Columns.Add(strValMember);
dt.Columns.Add(strDisMember);
row = dt.NewRow();
row[strValMember] = "01";
row[strDisMember] = "項目①";
dt.Rows.Add(row);
row = dt.NewRow();
row[strValMember] = "02";
row[strDisMember] = "項目②";
dt.Rows.Add(row);
col.DataSource = dt;
col.ValueMember = strValMember;
col.DisplayMember = strDisMember;
}
}
}
最終更新:2011年06月16日 23:51