日付コントロールに最大値と最小値を設定するには?

文書番号 : 40920     文書種別 : 使用方法     登録日 : 2017/08/25     最終更新日 : 2017/08/25
文書を印刷する
対象製品
InputMan for Windows Forms 10.0J
詳細
日付コントロールに最大値および最小値を設定し、範囲内の値であるかどうかの検証を行うには、下記2種類の方法があります。
  • コントロールの最大値と最小値のプロパティを設定し、入力中に検証を行う
  • 日付検証コンポーネントを利用して、フォーカス移動のタイミングで検証を行う
コントロールの最大値と最小値のプロパティ、および範囲外値の制御方法は以下の手順で実装します。
  1. 日付コントロールのMaxDateプロパティに最大値を、MinDateプロパティに最小値を設定します。
  2. 値がMaxDateプロパティとMinDateプロパティの範囲外の場合にその値をどのように制御するかをMaxMinBehaviorプロパティで設定します。
[Visual Basic]
Imports GrapeCity.Win.Editors

' コントロールに最大値と最小値を設定します。
GcDate1.MaxDate =  DateTime.Parse("2010/12/31")
GcDate1.MinDate =  DateTime.Parse("2001/1/1")
' 範囲外の場合に最後の入力をキャンセルしてフォーカスを保持します。
GcDate1.MaxMinBehavior =  MaxMinBehavior.CancelInput

[C#]
using GrapeCity.Win.Editors;

// コントロールに最大値と最小値を設定します。
gcDate1.MaxDate =  DateTime.Parse("2010/12/31");
gcDate1.MinDate =  DateTime.Parse("2001/1/1");
// 範囲外の場合に最後の入力をキャンセルしてフォーカスを保持します。
gcDate1.MaxMinBehavior =  MaxMinBehavior.CancelInput;


日付検証コンポーネントを利用する場合には、コントロールのMaxDate/MinDateプロパティを初期値のままとするか、MaxMinBehaviorプロパティを[Keep]に設定する必要があります。
その上で日付検証コンポーネントにGcDateValidator.InvalidRangeオブジェクトを追加することによって実現します。

フォームに日付検証コンポーネントを追加し、以下の手順で実装します。
  1. 日付コントロールのスマートタグから、「検証アイテムの編集」を選択します。
  2. 検証アイテム「InvalidRange」を追加します。
  3. MaxValueプロパティに最大値を、MinValueプロパティに最小値を設定します。
  4. OKをクリックします。
  5. 日付コントロールのスマートタグから、「検証アクションの編集」を選択します。
  6. 検証アクション「ValueProcess」を追加します。
  7. ValueProcessOptionプロパティを[Restore]に設定します。

コードで実装するには、以下のように記述します。
[Visual Basic]
Imports GrapeCity.Win.Editors

' コントロールに最大値と最小値の検証アイテムを設定します。
Dim InvalidRange1 As New GcDateValidator.InvalidRange()
' 2001/01/01~2010/12/31を入力範囲とします。 
InvalidRange1.MinValue = DateTime.Parse("2001/1/1")
InvalidRange1.MaxValue = DateTime.Parse("2010/12/31")
GcDateValidator1.GetValidateItems(GcDate1).Add(InvalidRange1)

' コントロールに入力された値が不正なときに、値(Textプロパティの値)を
' 入力前の値に戻す検証アクションを設定します。
Dim ValueProcess1 As New ValueProcess()
ValueProcess1.ValueProcessOption = ValueProcessOption.Restore
GcDateValidator1.GetValidateActions(GcDate1).Add(ValueProcess1)

[C#]
using GrapeCity.Win.Editors;

// コントロールに最大値と最小値の検証アイテムを設定します。
GcDateValidator.InvalidRange invalidRange1=new GcDateValidator.InvalidRange(); 
// 2001/01/01~2010/12/31を入力範囲とします。 
invalidRange1.MinValue = DateTime.Parse("2001/1/1");
invalidRange1.MaxValue = DateTime.Parse("2010/12/31");
gcDateValidator1.GetValidateItems(gcDate1).Add(invalidRange1);

// コントロールに入力された値が不正なときに、値(Textプロパティの値)を
// 入力前の値に戻す検証アクションを設定します。
ValueProcess valueProcess1=new ValueProcess();
valueProcess1.ValueProcessOption = ValueProcessOption.Restore;
gcDateValidator1.GetValidateActions(gcDate1).Add(valueProcess1);