MESCIUS InputMan for Windows Forms 12.0J
入力の制御

マスクコンボコントロールでは、マスク書式の設定が可能です。ここではマスクコンボコントロールが提供する入力機能について解説します。

書式の設定

マスクコンボコントロールでは正規表現による書式設定が可能です。書式の設定は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 プロパティの値に影響を与えることなく、入力を制御できます。

関連トピック

 

 


© MESCIUS inc. All rights reserved.