マスクコンボコントロールでは、マスク書式の設定が可能です。ここではマスクコンボコントロールが提供する入力機能について解説します。
マスクコンボコントロールでは正規表現による書式設定が可能です。書式の設定はFields プロパティによって行われ、フィールドとよばれる入力領域を構成する要素によって定義されます。Fields プロパティの詳細や書式の設定方法については、「書式の設定」で詳しく解説します。
AcceptsCrLf プロパティを使用してクリップボードへ改行を含む文字列をコピー、または貼り付けた場合の改行コードの扱いを設定できます。AcceptsCrLf プロパティは、CrLfMode 列挙体を使用して次の値を設定できます。
AcceptsCrLfの値 | 説明 |
---|---|
NoControl | 改行コードはそのままでコピー、貼り付けを行います。 |
Filter | 全ての改行コードを削除しコピー、貼り付けを行います。 |
Cut | 最初の改行コード以降の文字列を削除します。標準コントロールと同じ動作です。 |
AcceptsTabChar プロパティを使用してクリップボードへタブ文字を含む文字列をコピー、または貼り付けた場合のタブ文字の扱いを設定できます。AcceptsTabChar プロパティは、TabCharMode 列挙体を使用して次の値を設定できます。
AcceptsTabCharの値 | 説明 |
---|---|
NoControl | タブ文字はそのままでコピー、貼り付けを行います。 |
Filter | 全てのタブ文字を削除しコピー、貼り付けを行います。 |
Cut | 最初のタブ文字以降の文字列を削除します。 |
Value プロパティを使えば、リテラル文字とプロンプト文字を除いたコントロール内の文字列を取得または設定できます。たとえば、Text プロパティに「郵便番号:981-3205」が設定されているときには、Value プロパティの値は「9813205」となります。
リテラル文字とプロンプト文字については「書式の設定」で解説しています。
Value プロパティが変更されると、その変更はDisplayText プロパティとText プロパティにも適用されます。また、InputStatus プロパティによって、すべてのフィールドに値が入力されているかどうかを確認することが可能です。
クリップボードにリテラル文字を含まない値を渡すには、ClipContent プロパティとSelectedText プロパティを使用します。ClipContent プロパティで制御できるのは、SelectedText プロパティの値のみなので、以下のプロパティの値をクリップボードに設定した場合は、ClipContent プロパティの設定は無効になります。なお、プロンプト文字列は、ClipContent プロパティの設定に関わらず常にクリップボードに渡されます。
次のサンプルコードは、ClipContent プロパティを使って、リテラル文字列を省いた文字列をクリップボードにコピーする方法を示します。
Imports GrapeCity.Win.Editors ' コントロールに値を設定して、クリップボードにコピーします。 GcMaskedComboBox1.Fields.AddRange("郵便番号:\D{3}-\D{4}") GcMaskedComboBox1.Value = "9813205" GcMaskedComboBox1.ClipContent = ClipContent.ExcludeLiterals GcMaskedComboBox1.SelectionStart = 0 GcMaskedComboBox1.SelectionLength = GcMaskedComboBox1.Text.Length Clipboard.SetDataObject(GcMaskedComboBox1.SelectedText) ' クリップボードのデータを取得して確認します。 Dim cbData As IDataObject = Clipboard.GetDataObject() Label1.Text = cbData.GetData(DataFormats.Text)
using GrapeCity.Win.Editors; // コントロールに値を設定して、クリップボードにコピーします。 gcMaskedComboBox1.Fields.AddRange("郵便番号:\\D{3}-\\D{4}"); gcMaskedComboBox1.Value = "9813205"; gcMaskedComboBox1.ClipContent = ClipContent.ExcludeLiterals; gcMaskedComboBox1.SelectionStart = 0; gcMaskedComboBox1.SelectionLength = gcMaskedComboBox1.Text.Length; Clipboard.SetDataObject(gcMaskedComboBox1.SelectedText); // クリップボードのデータを取得して確認します。 IDataObject cbData = Clipboard.GetDataObject(); label1.Text = cbData.GetData(DataFormats.Text).ToString();
コントロールに文字列を入力するとTextChanging イベントが、TextChanged イベントの前(入力された文字列がText プロパティに渡される前)に発生します。このイベント内で入力文字列をチェックすれば、Text プロパティの値に影響を与えることなく、入力を制御できます。