JIS X 0213で追加された文字や環境依存文字、あるいは絵文字の入力を制限できますか?
対象製品
InputMan for Windows Forms 8.0J
詳細
テキスト、マスク、コンボおよびマスクコンボコントロールや、検証コンポーネントを使用すると、数字やカナ、アルファベットや記号などのほかに、以下の文字に対して入力を制限することができます。
なお、文字の入力制限は、各コントロールの書式設定に該当するキーワードを設定することで実現します。
Shift JISで構成された文字は、JIS X 0208で構成された文字に加え、半角の記号、英数字、カタカナや、Windowsの機種依存文字なども含んだ2バイト文字の集合です。該当するキーワードはMです。
なお、Windows 8のタッチキーボードで使用可能な絵文字は、JIS X 0208にもShift JISにも含まれないため、キーワードIやMの設定で入力を制限することができます。
テキストコントロールへ環境依存文字やサロゲートペア文字の入力以外の全角文字の入力を許可するには次のように設定します。
[Visual Basic]
[C#]
以下は、テキストコントロールにShift JISで構成された文字から半角カタカナのみ入力を制限する例です。
[Visual Basic]
[C#]
次のサンプルコードは、汎用検証コンポーネントを使用して標準のTextBoxコントロールに対し、全角文字のうちサロゲートペア文字が入力されるとエラーを検出する例です。
[Visual Basic]
[C#]
なお、文字の入力制限は、各コントロールの書式設定に該当するキーワードを設定することで実現します。
- サロゲート ペア文字
- 2バイト文字(サロゲート ペア文字を除いた全角文字)
- JIS X 0208で構成された文字
- Shift JIS(CP932)で構成された文字
- IVS(Ideographic Variation Sequence)文字
Shift JISで構成された文字は、JIS X 0208で構成された文字に加え、半角の記号、英数字、カタカナや、Windowsの機種依存文字なども含んだ2バイト文字の集合です。該当するキーワードはMです。
なお、Windows 8のタッチキーボードで使用可能な絵文字は、JIS X 0208にもShift JISにも含まれないため、キーワードIやMの設定で入力を制限することができます。
テキストコントロールへ環境依存文字やサロゲートペア文字の入力以外の全角文字の入力を許可するには次のように設定します。
[Visual Basic]
GcTextBox.Format = "I"
[C#]
gcTextBox.Format = "I";
以下は、テキストコントロールにShift JISで構成された文字から半角カタカナのみ入力を制限する例です。
[Visual Basic]
GcTextBox.Format = "M^K"
[C#]
gcTextBox.Format = "M^K";
次のサンプルコードは、汎用検証コンポーネントを使用して標準のTextBoxコントロールに対し、全角文字のうちサロゲートペア文字が入力されるとエラーを検出する例です。
[Visual Basic]
Imports GrapeCity.Win.Editors ' 検証アイテムを作成します。 Dim CharFormat1 As New CharFormat() ' 全角文字のうちサロゲートペア文字の入力を禁止します。 CharFormat1.Format = "Z^T" ' エラーメッセージを設定します。 CharFormat1.InvalidMessage = "サロゲートペア文字の入力はできません。" ' TextBox1に作成した検証アイテムを設定 GcCommonValidator1.GetValidateItems(TextBox1).AddRange(New Object() {CharFormat1})
[C#]
using GrapeCity.Win.Editors; // 検証アイテムを作成します。 CharFormat charFormat1 = new CharFormat(); // 全角文字のうちサロゲートペア文字の入力を禁止します。 charFormat1.Format = "Z^T"; // エラーメッセージを設定します。 charFormat1.InvalidMessage = "サロゲートペア文字の入力はできません。"; // textBox1に作成した検証アイテムを設定します。 gcCommonValidator1.GetValidateItems(textBox1).AddRange(new object[] {charFormat1});