[Input for WinForms] C1NimericEditで、CustomFormatとMaxLengthを設定し、入力可能な文字数まで数値を入力すると、例外エラーが発生することがある

文書番号 : 81921     文書種別 : 既知の問題     登録日 : 2016/12/20     最終更新日 : 2016/12/20
文書を印刷する
対象製品
ComponentOne for WinForms
ステータス
回避方法あり
詳細
C1NimericEditで、DisplayFormat.CustomFormatを"#,0"などに設定し、MaxLengthで入力可能な文字数を指定した場合、小数点以下に最大桁数まで数値を入力すると、FormatExceptionの例外エラーが発生することがあります。

 (例)
 MaxLength=5の場合、「.1111」のような形で入力すると、エラーが発生します。
 ただし、「0.111」と入力してもエラーは発生しません。

FormatTypeプロパティを「DefaultFormat」のままにした場合、TypeConverter.ConvertToString() を使用して入力文字から数値への変換が行われますが、このとき整数部に0が付加されて「0.1111」として戻り、これが最大文字数を超えるためです。


回避方法
C1NimericEditのEditFormat.CustomFormatを使用して、入力値の桁数制限を行います。

(上記の例の場合)
◎サンプルコード(VB)
C1NumericEdit1.MaxLength = 5
C1NumericEdit1.EditFormat.FormatType = C1.Win.C1Input.FormatTypeEnum.CustomFormat
C1NumericEdit1.EditFormat.CustomFormat = "######.###"
C1NumericEdit1.DisplayFormat.FormatType = C1.Win.C1Input.FormatTypeEnum.CustomFormat
C1NumericEdit1.DisplayFormat.CustomFormat = "#,0"

◎サンプルコード(C#)
c1NumericEdit1.MaxLength = 5;
c1NumericEdit1.EditFormat.FormatType = C1.Win.C1Input.FormatTypeEnum.CustomFormat;
c1NumericEdit1.EditFormat.CustomFormat = "######.###";
c1NumericEdit1.DisplayFormat.FormatType = C1.Win.C1Input.FormatTypeEnum.CustomFormat;
c1NumericEdit1.DisplayFormat.CustomFormat = "#,0";