キャラクタボックスコントロールが提供する入力機能について解説します。
キャラクタボックスコントロールは、Format プロパティにより書式を設定することで入力可能な文字種を制限することができます。また、AutoConvert プロパティを使用して指定の書式に自動的に変換することも可能です。
キャラクタボックスコントロールに設定可能な文字種等の詳細については、「書式の設定」で解説します。
キャラクタボックスコントロールでは、InputDirection プロパティを使って、テキストの入力方向を設定することができます。コントロールへの入力内容に応じてテキストの入力方向を設定することで、自然な入力を実現することができます。
たとえば、文字列や番号のような入力の場合、CharMaskInputDirection.LeftToRight(左から右へ)、数値や金額などを入力する場合はCharMaskInputDirection.RightToLeft (右から左へ)のように設定することができます。
次のサンプルコードは、入力方向を右から左に設定する例です。
GcCharMask1.InputDirection = GrapeCity.Win.Editors.CharMaskInputDirection.RightToLeft
gcCharMask1.InputDirection = GrapeCity.Win.Editors.CharMaskInputDirection.RightToLeft;
AcceptsCrLf プロパティを使用してクリップボードへ改行を含む文字列をコピー、または貼り付けた場合の改行コードの扱いを設定できます。AcceptsCrLf プロパティは、CrLfMode 列挙体を使用して次の値を設定できます。
AcceptsCrLfの値 | 説明 |
---|---|
NoControl | 改行コードはそのままでコピー、貼り付けを行います。 |
Filter | 全ての改行コードを削除しコピー、貼り付けを行います。 |
Cut | 最初の改行コード以降の文字列を削除します。標準コントロールと同じ動作です。 |
Value プロパティを使えば、リテラル文字とプロンプト文字を除いたコントロール内の文字列を取得または設定できます。たとえば、Text プロパティに「〒981-3205」が設定されているときには、Value プロパティの値は「9813205」となります。
Value プロパティが変更されると、その変更はText プロパティにも適用されます。また、ValueIsFull プロパティによって、すべてのフィールドに値が入力されているかどうかを確認することが可能です。
クリップボードにリテラル文字を含まない値を渡すには、ClipContent プロパティとSelectedText プロパティを使用します。ClipContent プロパティで制御できるのは、SelectedText プロパティの値のみなので、以下のプロパティの値をクリップボードに設定した場合は、ClipContent プロパティの設定は無効になります。なお、プロンプト文字列は、ClipContent プロパティの設定に関わらず常にクリップボードに渡されます。
次のサンプルコードは、ClipContent プロパティを使って、リテラル文字列を省いた文字列をクリップボードにコピーする方法を示します。
Imports GrapeCity.Win.Editors ' マス目をクリアします。 GcCharMask1.CharBoxes.Clear() ' 書式を設定します。 GcCharMask1.Format = "9" ' 郵便番号用のマス目を設定します。 GcCharMask1.CharBoxes.Add(New LiteralBox("〒")) GcCharMask1.CharBoxes.Add(New InputBox()) GcCharMask1.CharBoxes.Add(New InputBox()) GcCharMask1.CharBoxes.Add(New InputBox()) GcCharMask1.CharBoxes.Add(New SeparatorBox()) GcCharMask1.CharBoxes.Add(New InputBox()) GcCharMask1.CharBoxes.Add(New InputBox()) GcCharMask1.CharBoxes.Add(New InputBox()) GcCharMask1.CharBoxes.Add(New InputBox()) GcCharMask1.Value = "9813205" ' コントロールに値を設定して、クリップボードにコピーします。 GcCharMask1.ClipContent = ClipContent.ExcludeLiterals GcCharMask1.SelectionStart = 0 GcCharMask1.SelectionLength = GcCharMask1.Text.Length Clipboard.SetDataObject(GcCharMask1.SelectedText) ' クリップボードのデータを取得して確認します。 Dim cbData As IDataObject = Clipboard.GetDataObject() Label1.Text = cbData.GetData(DataFormats.Text)
using GrapeCity.Win.Editors; // マス目をクリアします。 gcCharMask1.CharBoxes.Clear(); // 書式を設定します。 gcCharMask1.Format = "9"; // 郵便番号用のマス目を設定します。 gcCharMask1.CharBoxes.Add(new LiteralBox("〒")); gcCharMask1.CharBoxes.Add(new InputBox()); gcCharMask1.CharBoxes.Add(new InputBox()); gcCharMask1.CharBoxes.Add(new InputBox()); gcCharMask1.CharBoxes.Add(new SeparatorBox()); gcCharMask1.CharBoxes.Add(new InputBox()); gcCharMask1.CharBoxes.Add(new InputBox()); gcCharMask1.CharBoxes.Add(new InputBox()); gcCharMask1.CharBoxes.Add(new InputBox()); gcCharMask1.Value = "9813205"; // コントロールに値を設定して、クリップボードにコピーします。 gcCharMask1.ClipContent = ClipContent.ExcludeLiterals; gcCharMask1.SelectionStart = 0; gcCharMask1.SelectionLength = gcCharMask1.Text.Length; Clipboard.SetDataObject(gcCharMask1.SelectedText); // クリップボードのデータを取得して確認します。 IDataObject cbData = Clipboard.GetDataObject(); label1.Text = cbData.GetData(DataFormats.Text).ToString();