セルの値の変更を検知して、なにかの処理を行うのは最も頻繁に行われる処理です。
どの表コンポーネントでもこの機能は必ず付いています。
DataGridViewの場合は、以下のイベントで行います。
DataGridView.CellValueChanged
関連する他の一般的なイベントとしては、
- CellContentsClick
- CellValidating
- CellEndEdit
などがあります。
DataGridViewには、非常に多くのイベントがあり
細かい制御が可能となっています。
以下サンプルです。
サンプルでは、セルの値が変更された際にセルの背景色を
変更するようになっています。
// vim:set ts=4 sw=4 et ws is nowrap ft=cs: using System; using System.Drawing; using System.Windows.Forms; using Gsf.Samples.Utility; namespace Gsf.Samples.DGV{ public class DataGridViewSample06 : BaseForm{ public DataGridViewSample06() : base("DataGridViewSample06"){ // nop; } protected override void InitializeComponents(){ DataGridView grid = CreateDefaultGrid(); grid.Dock = DockStyle.Fill; PutTestData(grid); // // セル値が編集された際にその変更を検知する. // // ユーザがセルの値を編集した場合、以下の順序でイベントが呼ばれます。 // // (1) CellEnter // (2) CellBeginEdit // (3) CellLeave // (4) CellValidating // (5) *** CellValueChanged *** // (6) CellEndEdit // grid.CellValueChanged += delegate(object sender, DataGridViewCellEventArgs e){ DataGridView _grid = sender as DataGridView; // // DataGridViewは、インデクサを実装しているので、インデクサを使ったものと // 以下のものは同じ事になります. // //_grid.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor = Color.Yellow; // _grid[e.ColumnIndex, e.RowIndex].Style.BackColor = Color.Yellow; }; Controls.Add(grid); } static void Main(){ ApplicationUtility.Launch("Gsf.Samples.DGV.DataGridViewSample06"); } } }
================================
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場