いろいろ備忘録日記

主に .NET と Python絡みのメモを公開しています。

DataGridView入門記-06 (セルの値変更を検知(CellValueChanged))

セルの値の変更を検知して、なにかの処理を行うのは最も頻繁に行われる処理です。
どの表コンポーネントでもこの機能は必ず付いています。


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");
        }
    }

}

================================
過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。