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

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

' コントロールに最大値と最小値を設定します。
GcNumber1.MaxValue =  20
GcNumber1.MinValue =  5
' 範囲外の場合に最後の入力をキャンセルしてフォーカスを保持します。
GcNumber1.MaxMinBehavior =  MaxMinBehavior.CancelInput

[C#]
using GrapeCity.Win.Editors;

// コントロールに最大値と最小値を設定します。
gcNumber1.MaxValue = 20;
gcNumber1.MinValue = 5;
// 範囲外の場合に最後の入力をキャンセルしてフォーカスを保持します。
gcNumber1.MaxMinBehavior =  MaxMinBehavior.CancelInput;

数値検証コンポーネントを利用する場合には、コントロールの MaxValue/MinValueプロパティを初期値のままとするか、MaxMinBehaviorプロパティを「Keep」に設定する必要があります。
その上で数値検証コンポーネントにGcNumberValidator.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 GcNumberValidator.InvalidRange()
' 5~20を入力範囲とします。 
InvalidRange1.MinValue = 5
InvalidRange1.MaxValue = 20
GcNumberValidator1.GetValidateItems(GcNumber1).Add(InvalidRange1)

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

[C#]
using GrapeCity.Win.Editors;

// コントロールに最大値と最小値の検証アイテムを設定します。
GcNumberValidator.InvalidRange invalidRange1 = new  GcNumberValidator.InvalidRange();
// 5~20を入力範囲とします。 
invalidRange1.MinValue = 5;
invalidRange1.MaxValue = 20;
gcNumberValidator1.GetValidateItems(gcNumber1).Add(invalidRange1);

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

数値検証コンポーネントを利用した場合、スピンボタンや矢印キー、マウスホイールで値を上下させた場合には最大値と最小値の範囲内で値が上下しません。範囲内でループさせるためにはSpinUpイベント、SpinDownイベントをハンドルし、範囲のチェックを実装します。

[Visual Basic]
Private Sub GcNumber1_SpinUp(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GcNumber1.SpinUp
    ' 最大値を超える場合は最小値を設定する
    If GcNumber1.Value > 20 Then
        GcNumber1.Value = 5
    End If
End Sub

Private Sub GcNumber1_SpinDown(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GcNumber1.SpinDown
    ' 最小値を超える場合は最大値を設定する
    If GcNumber1.Value < 5 Then
        GcNumber1.Value = 20
    End If
End Sub

[C#]
private void gcNumber1_SpinUp(object sender, EventArgs e)
{
    // 最大値を超える場合は最小値を設定する
    if (gcNumber1.Value > 20)
    {
        gcNumber1.Value = 5;
    }
}

private void gcNumber1_SpinDown(object sender, EventArgs e)
{
    // 最小値を超える場合は最大値を設定する
    if (gcNumber1.Value < 5)
    {
        gcNumber1.Value = 20;
    }
}