Ink-Enabled コントロールのコンテキストの設定
インク対応コントロールのすべての認識は、RecognizerContext オブジェクトを介して行われます。 Tablet PC テクノロジ API を使用すると、RecognizerContext オブジェクトに Factoid プロパティを設定できます。
インク対応アプリケーションを作成する場合は、RecognizerContext オブジェクトの Factoid を使用し、WordListプロパティをしてコンテキストを設定します。
InputScope 列挙で定義されている入力スコープ内の名前の文字列値を、Factoid プロパティに、開始 (! と終了) で区切って渡すことができます。 たとえば、RecognizerContext オブジェクトのコンテキストを URL で使用される文字に偏って設定するには、次の C# の例に示す構文を使用します。
theRecoContext.Factoid = "(!IS_URL)";
注意
InputScope 列挙型で定義されている入力スコープは、以前のバージョンの Windows XP Tablet PC Edition SDK で使用できたファクトロイドよりも優先されますが、これらの factoid は下位互換性を提供するために引き続き機能します。
次の C# の例では、郵便番号の Factoid プロパティを設定します。
theRecognizerContext.Factoid = "(!IS_ADDRESS_POSTALCODE)";
手書き正規表現構文を使用して、入力スコープを組み合わせることができます。 正規表現構文の使用の詳細については、「正規表現 を使用したカスタム入力スコープの」を参照してください。
認識エンジンの動作に影響を与えるために、RecognizerContext オブジェクトに認識フラグを設定できます。 このようなフラグの 1 つは、RecognizerContextの InkRecognitionModes 列挙の Coerce フラグです。 Coerce フラグは、設定されている factoid の定義に一致する結果を認識エンジンに強制的に返します。 たとえば、ユーザーが数値を入力する必要があるフォームがある場合は、IS_NUMBER factoid を設定し、そしてRecognitionFlags プロパティをCoerceに設定すると便利です。 その場合、Coerce フラグは、認識エンジンが数値のみを返すように保証します。
次の C# の例では、RecognitionFlags プロパティを Coerceに設定します。
theRecognizerContext.RecognitionFlags = RecognitionModes.Coerce;
ただし、Coerce フラグを設定する場合は注意が必要です。 フラグは、認識エンジンが factoid の定義にのみ一致するように強制します。 たとえば、IS_TELEPHONE_FULLTELEPHONENUMBER入力スコープと Coerce フラグを設定した場合、認識エンジンは、IS_TELEPHONE_FULLTELEPHONENUMBER入力スコープの定義にのみ完全に一致する結果を返します。 ユーザーがIS_TELEPHONE_FULLTELEPHONENUMBER入力スコープと Coerce フラグを設定して "911" を書き込む場合、認識エンジンは空の文字列または (XXX) XXX-XXXX 形式のランダムな文字列 (X は数字) を返す可能性があります。 XXX の形式は、有効な電話番号であっても、IS_TELEPHONE_FULLTELEPHONENUMBER factoid の定義と一致しません。
各入力スコープでサポートされている形式の一覧については、InputScope リファレンスを参照してください。
認識エンジンの既定の設定にフィールドを返すには、次の C# の例のように、factoid を IS_DEFAULT に設定します。
theRecgonizerContext.Factoid = "(!IS_DEFAULT)";
InkEdit コントロールを使用するアプリケーションの場合は、次のように指定して、コントロールの factoid 型を設定します。
InkEdit1.Factoid = "(!IS_INPUTSCOPE)"
ここで IS_INPUTSCOPE
は、適用する入力スコープの名前です。
InkEdit コントロールは、RecognizerContext オブジェクトを公開しません。 InkEdit コントロールの Factoid プロパティを使用してもコンテキストを割り当てることができますが、WORDMODE フラグを設定することはできません。