マスクコントロールでは、マスク書式の設定やパスワード入力が可能です。ここではマスクコントロールが提供する入力機能について解説します。
マスクコントロールでは正規表現による書式設定が可能です。書式の設定は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 ' コントロールに値を設定して、クリップボードにコピーします。 GcMask1.Fields.AddRange("郵便番号:\D{3}-\D{4}") GcMask1.Value = "9813205" GcMask1.ClipContent = ClipContent.ExcludeLiterals GcMask1.SelectionStart = 0 GcMask1.SelectionLength = GcMask1.Text.Length Clipboard.SetDataObject(GcMask1.SelectedText) ' クリップボードのデータを取得して確認します。 Dim cbData As IDataObject = Clipboard.GetDataObject() Label1.Text = cbData.GetData(DataFormats.Text)
using GrapeCity.Win.Editors; // コントロールに値を設定して、クリップボードにコピーします。 gcMask1.Fields.AddRange("郵便番号:\\D{3}-\\D{4}"); gcMask1.Value = "9813205"; gcMask1.ClipContent = ClipContent.ExcludeLiterals; gcMask1.SelectionStart = 0; gcMask1.SelectionLength = gcMask1.Text.Length; Clipboard.SetDataObject(gcMask1.SelectedText); // クリップボードのデータを取得して確認します。 IDataObject cbData = Clipboard.GetDataObject(); label1.Text = cbData.GetData(DataFormats.Text).ToString();
書式の設定で、パターンフィールド(MaskPatternField クラス)にパスワードを設定することができます。 MaskPatternField オブジェクトに以下のいずれかの設定を行うと、特定のフィールドをパスワード入力専用にできます。
フィールドの設定については、「書式の設定」を参照してください
また、コントロールのPasswordRevelationMode プロパティを使用すると入力中のパスワード文字列を一時的に表示することが可能です。PasswordRevelationMode プロパティに設定可能な値は以下のとおりです。
PasswordRevelationMode の値 | 説明 |
---|---|
None | パスワード文字列を表示しません。 |
ShowEyeButton | パスワードを入力すると、コントロールの右端に目のアイコンが表示されこのアイコンのクリックでパスワード文字列を表示します。 |
ShowLastTypeChar | 最後に入力した文字だけ数秒間表示します。 |
コントロールに文字列を入力するとTextChanging イベントが、TextChanged イベントの前(入力された文字列がText プロパティに渡される前)に発生します。このイベント内で入力文字列をチェックすれば、Text プロパティの値に影響を与えることなく、入力を制御できます。