Visual Studio 2005 新クラス紹介 MaskedTextBox ValidatingTypeを使いこなす
この文書はVisual Studio 2005 Beta2(.NET2.0)をベースに記述されています。
VisualStudio 2005にはAccessなどに搭載されているマスクつきテキストボックスの機能が搭載されています。
概論は.NET Visual Studio 2005 新クラス紹介 MaskedTextBox Overview
定型入力でValidatingTypeを使用するをチェックした場合に、FormDesigner.csのプロパティには下記のようなソースが出力されます。
this.maskedTextBox1.Mask = "0000年90月90日"; this.maskedTextBox1.ValidatingType = typeof(System.DateTime);
Maskの方には伝統的な0や9などを利用した特殊なフォーマット指定を行います。
独自のキーなどを利用する場合には0000-000000-0000などを指定して利用することになるでしょう。
特徴はValidatingTypeでDateTimeの型自体を渡しています。
MaskedTextBoxは内部で入力文字の検査を行ってくれます。
ValidatingTypeに値が設定されている場合には、ValidatingTypeに指定した型のParseメソッドを呼び出します。(この場合だとDateTime.Parse())その結果をもってTypeValidationCompletedイベントを呼び出します。
#ここでなぜかParseという名前のメソッドを呼び出すという実装をしてくれているため、なかなか独自の型を設定したりするときには注意が必要です。また、DateTimeにParseExactを使う用法が利用できないのでさらに注意が必要。(和暦は無理か)
object a = this.maskedTextBox1.ValidateText();
設定した型で値を取得する場合には上記の構文のValidateTextメソッドを利用します。
Validateが通らなかった場合にはnullが帰ってきます。