日付時刻コントロールでは書式設定により、日付や時刻の入力および表示書式を自由に設定することができます。入力書式は、コントロールが入力フォーカスを受け取ったときの書式で、表示書式は入力フォーカスのないときの書式です。書式には和暦を使用することも可能です。
入力書式の設定は、
Formatプロパティを使用します。また、表示書式は、
DisplayFormatプロパティを使用し、それぞれキーワードを設定することで、書式を作成します。 これらのプロパティやキーワードについては、「
書式の設定」で詳しく解説します。
MinDateプロパティと
MaxDateプロパティを使用してコントロールに入力可能な日付範囲を指定できます。
AdjustValueOnFocusプロパティがTrueの場合は、すべてのフィールドの値が入力されたとき、Falseの場合はフォーカスが移動するときに検証が行われます。 範囲外の日付が入力されると、
InvalidRangeクライアントイベントが発生し、
MaxMinBehaviorプロパティの設定によって値が制御されます。 MaxMinBehaviorプロパティに設定できる値は以下のとおりで、既定値は
MaxMinBehavior.Restoreです。
MaxMinBehaviorの値 |
説明 |
AdjustToMaxMin |
値を最小値か最大値の近い方に設定します。 |
Clear |
値を削除してnull(Visual BasicではNothing)にします。 |
Restore |
変更前の値に戻します。 |
CancelInput |
最後の入力をキャンセルしてフォーカスを保持します。 |
Keep |
最後に入力された現在値を保持します。 |
なお、
ValueプロパティをNullに初期化するには、
Clearメソッドを使用します。
次のサンプルコードは、範囲外の値を最小日付か最大日付の近い方の値に、入力中に自動調整される例です。この例では、「2013/12/31」と値を入力すると「2014/01/01」に自動調整されます。
日付時刻コントロールでは、入力時に、日付時刻として有効な文字種のだけが許可されるほか、以下のプロパティとイベントにより多重チェックが行われます。
機能 |
説明 |
ValidateMode |
入力中にコントロールに適用される正当性検査のレベルを指定します。 |
InvalidRange |
MinDateプロパティとMaxDateプロパティで定義された有効範囲を超えた値を入力して、コントロールからフォーカスを移動したときに発生します。 |
InvalidValue |
日付に変換できない値、または日付として認識できない値を入力して、コントロールからフォーカスを移動したときに発生します。 |
発生する可能性のあるイベントは、ValidateModeプロパティで設定した正当性検査のレベルによって、次のように異なります。
イベント |
完全チェック |
簡易チェック |
チェックなし |
InvalidInput |
○ |
○ |
○ |
InvalidRange |
○ |
○ |
○ |
InvalidValue |
× |
○ |
○ |
ImeModeプロパティを使用して、コントロールがフォーカスを取得したときのIMEの状態を設定することができます。
ImeModeプロパティに設定可能な値は次のとおりで、既定値は
ImeMode.Autoです。
ImeModeの値 |
説明 |
Auto |
指定しません。 |
Active |
日本語入力モードになります。 |
InActive |
半角英数文字入力モードになります。 |
Disabled |
IMEが無効になります。手動でIMEを有効にすることもできません。 |
AcceptsCrLfプロパティを使用してクリップボードへ改行を含む文字列をコピー、または貼り付けた場合の改行コードの扱いを設定できます。AcceptsCrLfプロパティは、以下の3つの動作から選択します。 既定値は
CrLfMode.NoControlです。
AcceptsCrLfの値 |
説明 |
NoControl |
改行コードはそのままでコピー、貼り付けを行います。 |
Filter |
コピー、切り取り、または貼り付け文字列内にあるすべての改行コードを削除します。 |
Cut |
コピー、切り取り、および貼り付け文字列内にある最初の改行コード以降の文字列を切り取ります。 |
Valueプロパティを使えば、リテラル文字列とプロンプト文字列を除いたコントロールの基となる値を
DateTimeEx型で取得または設定できます。
また、
Numberプロパティを使えば、リテラル文字列とプロンプト文字列を除いたコントロール内の日付を長整数型で取得または設定できます。たとえば、Textプロパティに「平成 27年01月01日」が設定されているときには、Numberプロパティの値は「20150101000000」となります。Numberプロパティが変更されると、その変更は
DisplayTextプロパティと
Textプロパティ、および
Valueプロパティにも適用されます。
コピーや切り取りなどのユーザー操作によりクリップボードにリテラル文字を含まない値を渡すには、
ClipContentプロパティを
ClipContent.ExcludeLiteralsに設定します。 ClipContentプロパティの設定は、クライアント側のSelectedTextプロパティから取得できる文字列にも適用されます。
なお、プロンプト文字列は、ClipContentプロパティの設定に関わらず常にクリップボードに渡されます。