DataGrid 上で行選択時の Delete キー操作を制御する方法

  DataGrid 上で行選択時の Delete キー操作は即座に実行され、ユーザーによっては確認操作を必要とする場合もあります。このようなキー操作を制御するには、DataGrid の派生クラスを生成し、「ProcessCmdKey()」メソッドをオーバーライドし、処理内容を記述することで行います。
【使い方】
/// <summary>
/// キーが押された時呼ばれます。 
/// </summary>
protected override bool ProcessCmdKey(ref Message msg, System.Windows.Forms.Keys keyData)    
{
    //Debug.WriteLine("ProcessCmdKey Start:");

    const int WM_KEYDOWN = 0x100;
    const int WM_SYSKEYDOWN = 0x104;

    if ((msg.Msg == WM_KEYDOWN) || (msg.Msg == WM_SYSKEYDOWN))
    {
        switch(keyData)
        {
            case Keys.Delete:        // 削除ボタン操作
                //Debug.WriteLine("Delete Captured");

                // カレント行が選択されているか確認(セル内での削除操作と分離)
                if ( this.IsSelected(this.CurrentRowIndex))
                {
                    // 削除メッセージ表示&確認
                    if ( MessageBox.Show("選択されたデータを削除します。よろしいですか?"
                            , "確認", MessageBoxButtons.YesNo, MessageBoxIcon.Question)    == DialogResult.No )
                    {
                        return true;
                    }
                }
                break;

        }
    }
    return base.ProcessCmdKey(ref msg, keyData);
}
【注意】
戻る