キャラクタボックスコントロールのマス目の設定方法について解説します。
コントロールに表示されるマス目は、CharBoxes プロパティが参照するCharBoxCollection オブジェクトによって定義されます。CharBoxCollection オブジェクトは、1つ1つのマス目を表すCharBox オブジェクトの集合を保持するコレクションです。つまり、キャラクタボックスコントロールでは、オブジェクトに保持されるCharBox オブジェクトをマス目の1つ1つとして表示します。
マス目を表すCharBox オブジェクトは、次の3つの種類のオブジェクトを持つことができます。
InputBox は、入力用の枠で1つのInputBoxに対して1文字入力することができます。LiteralBox は、任意の文字をリテラル文字として表示します。SeparatorBox は、入力枠を区切るハイフンを表示します。
キャラクタボックスコントロールにマス目を設定するには、CharBoxes プロパティが参照するCharBoxCollection オブジェクトのAdd メソッドを使用します。また、設定されているマス目をすべて削除するには、Clear メソッドを使用します。
次のサンプルコードは、郵便番号用の入力書式を例としたCharBoxを追加する例です。尚、マス目間のスペースや境界線、マス目のサイズ等の設定も行っています。これらの外観の設定に関する詳細は「外観の設定」を参照してください。
Imports GrapeCity.Win.Editors ' コントロールのAutoSizeプロパティをTrueに設定します。 GcCharMask1.AutoSize = True ' マス目間のスペースを設定します。 GcCharMask1.CharBoxSpacing = 2 ' 既定値のマス目の設定をクリアします。 GcCharMask1.CharBoxes.Clear() ' 入力枠用の境界線を定義します。 Dim borderSingle As New CharBoxBorder(New Line(LineStyle.Single, Color.Black)) ' リテラル文字とハイフン用の境界線を定義します。 Dim borderNone As New CharBoxBorder(New Line(LineStyle.None, Color.White)) ' リテラル文字を作成します。 Dim aLiteralBox As New LiteralBox() aLiteralBox.Size = New System.Drawing.Size(14, 24) aLiteralBox.Text = "〒" aLiteralBox.Border = borderNone ' 郵便番号の前の3桁用の枠を作成します。 Dim aInputBoxl As New InputBox aInputBoxl.Size = New System.Drawing.Size(18, 24) aInputBoxl.Border = borderSingle ' ハイフンを作成します。 Dim aSeparatorBox As New SeparatorBox() aSeparatorBox.Size = New System.Drawing.Size(10, 24) aSeparatorBox.Border = borderNone ' 郵便番号の後の4桁用の枠を作成します。 Dim aInputBoxs As New InputBox aInputBoxs.Size = New System.Drawing.Size(16, 20) aInputBoxs.Border = borderSingle ' コントロールに作成したマス目を追加します。 GcCharMask1.CharBoxes.Add(aLiteralBox) GcCharMask1.CharBoxes.Add(DirectCast(aInputBoxl.Clone, CharBox)) GcCharMask1.CharBoxes.Add(DirectCast(aInputBoxl.Clone, CharBox)) GcCharMask1.CharBoxes.Add(DirectCast(aInputBoxl.Clone, CharBox)) GcCharMask1.CharBoxes.Add(aSeparatorBox) GcCharMask1.CharBoxes.Add(DirectCast(aInputBoxs.Clone, CharBox)) GcCharMask1.CharBoxes.Add(DirectCast(aInputBoxs.Clone, CharBox)) GcCharMask1.CharBoxes.Add(DirectCast(aInputBoxs.Clone, CharBox)) GcCharMask1.CharBoxes.Add(DirectCast(aInputBoxs.Clone, CharBox)) ' 設定したマス目のサイズを有効にするために ' AutoSizeプロパティをFalseに設定します。 For Each aCharBox As CharBox In GcCharMask1.CharBoxes aCharBox.AutoSize = False Next
using GrapeCity.Win.Editors; // コントロールのAutoSizeプロパティをTrueに設定します。 gcCharMask1.AutoSize = true; // マス目間のスペースを設定します。 gcCharMask1.CharBoxSpacing = 2; // 既定値のマス目の設定をクリアします。 gcCharMask1.CharBoxes.Clear(); // 入力枠用の境界線を定義します。 CharBoxBorder borderSingle = new CharBoxBorder(new Line(LineStyle.Single, Color.Black)); // リテラル文字とハイフン用の境界線を定義します。 CharBoxBorder borderNone = new CharBoxBorder(new Line(LineStyle.None, Color.White)); // リテラル文字を作成します。 LiteralBox aLiteralBox = new LiteralBox(); aLiteralBox.Size = new System.Drawing.Size(14, 24); aLiteralBox.Text = "〒"; aLiteralBox.Border = borderNone; // 郵便番号の前の3桁用の枠を作成します。 InputBox aInputBoxl = new InputBox(); aInputBoxl.Size = new System.Drawing.Size(18, 24); aInputBoxl.Border = borderSingle; // ハイフンを作成します。 SeparatorBox aSeparatorBox = new SeparatorBox(); aSeparatorBox.Size = new System.Drawing.Size(10, 24); aSeparatorBox.Border = borderNone; // 郵便番号の後の4桁用の枠を作成します。 InputBox aInputBoxs = new InputBox(); aInputBoxs.Size = new System.Drawing.Size(16, 20); aInputBoxs.Border = borderSingle; // コントロールに作成したマス目を追加します。 gcCharMask1.CharBoxes.Add(aLiteralBox); gcCharMask1.CharBoxes.Add((CharBox)aInputBoxl.Clone()); gcCharMask1.CharBoxes.Add((CharBox)aInputBoxl.Clone()); gcCharMask1.CharBoxes.Add((CharBox)aInputBoxl.Clone()); gcCharMask1.CharBoxes.Add(aSeparatorBox); gcCharMask1.CharBoxes.Add((CharBox)aInputBoxs.Clone()); gcCharMask1.CharBoxes.Add((CharBox)aInputBoxs.Clone()); gcCharMask1.CharBoxes.Add((CharBox)aInputBoxs.Clone()); gcCharMask1.CharBoxes.Add((CharBox)aInputBoxs.Clone()); // 設定したマス目のサイズを有効にするために // AutoSizeプロパティをFalseに設定します。 foreach (CharBox aCharBox in gcCharMask1.CharBoxes) { aCharBox.AutoSize = false; }
(図) 上記サンプルコードを適用したコントロール
デザイン画面では「キャラクタボックスの編集」エディタから容易な設定が可能です。 このエディタは次のいずれかの方法で起動でき、マス目の詳細を設定できます。
「キャラクタボックスの編集」エディタ |