デザイナによる設定
デザイナで範囲の検証を設定するには、次のように操作します。この例では、数値型セルに0〜10の範囲を超える値が入力されたときに検証エラーを表示します。
- 値を検証するセルを選択する。(例: numericUpDownCell1)
- プロパティウィンドウでValidatorsプロパティを選択し、[...]ボタンをクリックする。
- 表示されたCellValidatorコレクションエディタで左上のコンボボックスから「RangeValidator」を選択し、[追加]をクリックする。
- [メンバ]リストでRangeValidatorが選択されていることを確認する。
- 画面右のプロパティグリッドでMaxValueプロパティを選択し、「10」を入力する。
- 画面右のプロパティグリッドでMinValueプロパティを選択し、「0」を入力する。
- 画面右のプロパティグリッドでActionsプロパティを選択し、[...]ボタンをクリックする。
- 表示されたCellValidateActionコレクションエディタでLineNotifyを追加する。
- [OK]ボタンをクリックしてCellValidateActionコレクションエディタを閉じる。
- [OK]ボタンをクリックしてCellValidatorコレクションエディタを閉じる。
- デザイナのドキュメントウィンドウのタブを「実行時」に切り替える。
- 「50」を入力してセルを移動したときに検証エラーになることを確認する。
- 「50」を消して「5」を入力して移動したときに検証エラーにならないことを確認する。
コーディングによる設定
次のコードは、セルに-1や50といった0〜10の範囲を超える数値が入力されたときに検証エラーを表示します。
Imports GrapeCity.Win.MultiRow Dim NumericUpDownCell1 As New NumericUpDownCell() Dim RangeValidator1 As New RangeValidator() RangeValidator1.RequiredType = GetType(Integer) RangeValidator1.MaxValue = 10 RangeValidator1.MinValue = 0 RangeValidator1.Actions.Add(New LineNotify()) NumericUpDownCell1.Validators.Add(RangeValidator1) Dim cells As Cell() = {NumericUpDownCell1} GcMultiRow1.Template = Template.CreateGridTemplate(cells) GcMultiRow1.RowCount = 10
using GrapeCity.Win.MultiRow; NumericUpDownCell numericUpDownCell1 = new NumericUpDownCell(); RangeValidator rangeValidator1 = new RangeValidator(); rangeValidator1.RequiredType = typeof(int); rangeValidator1.MaxValue = 10; rangeValidator1.MinValue = 0; rangeValidator1.Actions.Add(new LineNotify()); numericUpDownCell1.Validators.Add(rangeValidator1); Cell[] cells = { numericUpDownCell1 }; gcMultiRow1.Template = Template.CreateGridTemplate(cells); gcMultiRow1.RowCount = 10;
数値のカンマも含めた検証
RangeValidator.ParsingEnabledプロパティにTrueを設定すると、数値の文字列形式を等価な整数に変換して、変換した値に対して検証を行うことができます。また、ParsingEnabledプロパティにTrueが設定されている場合、カルチャを指定するためのFormatProviderプロパティを使用できます。
次のコードは、セルに入力されたカンマ付きの数値を検証します。
次のコードは、セルに入力されたカンマ付きの数値を検証します。
Imports System.Globalization Imports GrapeCity.Win.MultiRow Dim TextBoxCell1 As New TextBoxCell() TextBoxCell1.Style.Format = "#,#00" TextBoxCell1.ValueType = GetType(Integer) Dim RangeValidator1 As New RangeValidator() RangeValidator1.MaxValue = 10000 RangeValidator1.MinValue = 0 RangeValidator1.ParsingEnabled = True RangeValidator1.FormatProvider = CultureInfo.CurrentCulture RangeValidator1.Actions.Add(New LineNotify()) RangeValidator1.RequiredType = GetType(Decimal) TextBoxCell1.Validators.Add(RangeValidator1) Dim cells As Cell() = {TextBoxCell1} GcMultiRow1.Template = Template.CreateGridTemplate(cells) GcMultiRow1.RowCount = 10
using System.Globalization; using GrapeCity.Win.MultiRow; TextBoxCell textBoxCell1 = new TextBoxCell(); textBoxCell1.Style.Format = "#,#00"; textBoxCell1.ValueType = typeof(int); RangeValidator rangeValidator1 = new RangeValidator(); rangeValidator1.MaxValue = 10000; rangeValidator1.MinValue = 0; rangeValidator1.ParsingEnabled = true; rangeValidator1.FormatProvider = CultureInfo.CurrentCulture; rangeValidator1.Actions.Add(new LineNotify()); rangeValidator1.RequiredType = typeof(Decimal); textBoxCell1.Validators.Add(rangeValidator1); Cell[] cells = { textBoxCell1 }; gcMultiRow1.Template = Template.CreateGridTemplate(cells); gcMultiRow1.RowCount = 10;