作成日: 2017/08/25 最終更新日: 2017/08/25
文書種別
使用方法
詳細
日付時刻および日付コントロールで、次の例のように入力可能な範囲を1年間に設定した場合、年入力フィールドを非表示にするとSpin.WrapプロパティがFalseであっても、スピン時に日付の値が12月と1月の間でループします。
[Visual Basic]
この動作は、次のようなコントロールの仕様によります。
この仕様により、スピン機能を使用すると、Spin.WrapプロパティがFalseであっても日付の値がループします。
上記の例において、12月と1月の間で値のループを禁止したい場合は、TextChangingイベントに以下の処理を実装します。
なお、e.Result.Containsメソッドに指定している文字列は、コントロールの入力書式が「MM/dd」の場合の例です。この文字列は、入力書式に応じて適切に設定する必要があります。
[Visual Basic]
[Visual Basic]
GcDateTime1.MaxDate = New DateTime(2015, 12, 31, 0, 0 ,0)
GcDateTime1.MinDate = New DateTime(2015, 1, 1, 0, 0, 0)
GcDateTime1.Fields.Clear()
GcDateTime1.Fields.AddRange("MM/dd")
GcDateTime1.Spin.Wrap = False
[C#]gcDateTime1.MaxDate = new DateTime(2015, 12, 31, 0, 0, 0);
gcDateTime1.MinDate = new DateTime(2015, 1, 1, 0, 0, 0);
gcDateTime1.Fields.Clear();
gcDateTime1.Fields.AddRange("MM/dd");
gcDateTime1.Spin.Wrap = false;
この動作は、次のようなコントロールの仕様によります。
- Spin.Wrapプロパティは、日付の値を入力可能な範囲内でループさせるかどうかを設定するもので、各入力フィールドの値のループを制御するためのプロパティではありません。
- 非表示に設定された入力フィールドの値は、スピン動作によって変化しません。
この仕様により、スピン機能を使用すると、Spin.WrapプロパティがFalseであっても日付の値がループします。
上記の例において、12月と1月の間で値のループを禁止したい場合は、TextChangingイベントに以下の処理を実装します。
なお、e.Result.Containsメソッドに指定している文字列は、コントロールの入力書式が「MM/dd」の場合の例です。この文字列は、入力書式に応じて適切に設定する必要があります。
[Visual Basic]
Private Sub GcDateTime1_TextChanging(sender As Object,e As TextChangingEventArgs) Handles GcDateTime1.TextChanging
If GcDateTime1.Value.HasValue Then
If GcDateTime1.Value.Value.Month = 1 And e.Result.Contains("12/") Then
' 1月から12月へのループを禁止します。
e.Cancel = True
ElseIf GcDateTime1.Value.Value.Month = 12 And e.Result.Contains("01/") Then
' 12月から1月へのループを禁止します。
e.Cancel = True
End If
End If
End Sub
[C#]private void gcDateTime1_TextChanging(object sender, TextChangingEventArgs e)
{
if (gcDateTime1.Value.HasValue) {
if (gcDateTime1.Value.Value.Month == 1 && e.Result.Contains("12/")) {
// 1月から12月へのループを禁止します。
e.Cancel = true;
}
else if (gcDateTime1.Value.Value.Month == 12 && e.Result.Contains("01/")) {
// 12月から1月へのループを禁止します。
e.Cancel = true;
}
}
}
関連情報
旧文書番号
40986