//新しいプロパティを追加しているため、

        // Cloneメソッドをオーバーライドする必要がある

        public override object Clone()
        {
            DataGridViewMaskedTextBoxColumn col =

                (DataGridViewMaskedTextBoxColumn)base.Clone();

            col.Mask = this.Mask;

            return(col);
        }
        //編集コントロールを初期化する

        //編集コントロールは別のセルや列でも使いまわされるため、初期化の必要がある

        public override void InitializeEditingControl(

            int rowIndex, object initialFormattedValue,

            DataGridViewCellStyle dataGridViewCellStyle)
        {
            base.InitializeEditingControl(rowIndex,

                                          initialFormattedValue, dataGridViewCellStyle);



            //編集コントロールの取得

            DataGridViewMaskedTextBoxEditingControl maskedBox =

                this.DataGridView.EditingControl as

                DataGridViewMaskedTextBoxEditingControl;

            if (maskedBox != null)
            {
                //Textを設定

                maskedBox.Text =

                    this.Value != null?this.Value.ToString() : "";

                //カスタム列のプロパティを反映させる

                DataGridViewMaskedTextBoxColumn column =

                    this.OwningColumn as DataGridViewMaskedTextBoxColumn;

                if (column != null)
                {
                    maskedBox.Mask = column.Mask;
                }
            }
        }