デザイン時に InfoPath オブジェクト モデルを使用するフォーム テンプレートのトラブルシューティング

ここでは、Microsoft.Office.Interop.InfoPath.SemiTrust 名前空間によって提供される InfoPath 2003 互換オブジェクト モデルを使用する、マネージ コード フォーム テンプレートのデザイン時およびデバッグ時に発生する可能性のある一般的なトラブルシューティングのシナリオについて説明します。

オブジェクト モデル セキュリティ レベル 3 のメソッドとプロパティへの呼び出しを使用するフォーム テンプレートをプレビューまたはデバッグできない

完全信頼を必要とするオブジェクト モデルのメンバーを呼び出すコードが含まれるマネージ コード プロジェクトをデバッグまたはプレビューしようとすると、"ハンドルされていないセキュリティの例外がフォームのコードで発生しました" というエラー メッセージが InfoPath によって表示され、フォームが開きません。 フォーム テンプレートのビジネス ロジックをデバッグまたはプレビューできるようにするには、セキュリティ レベルを [完全信頼] に設定し、フォームにデジタル署名する必要があります。 これを行う方法の詳細については、「 完全信頼が必要なフォーム テンプレートのプレビューとデバッグ」を参照してください。

MatchPath パラメーターの値を手動で削除した場合に、イベント ハンドラーの XPath 式を更新できない

フィールドまたはグループにイベント ハンドラーを追加し、後から InfoPath の [フィールド] 作業ウィンドウで、そのフィールドやグループに影響を与えるような方法で (たとえば、名前を変更したり移動したりする) データ ソースのスキーマを変更した場合、フォームのコードの XPath 式を更新するかどうかを確認するメッセージが表示されます。 このメッセージで参照される XPath 式は、InfoPathEventHandlerAttribute 属性の MatchPath パラメーターで指定された値です。これは、イベント ハンドラーをフォームのデータ ソース内のフィールドまたはグループに関連付けるために使用されます。 コードの他の XPath 式は更新されません。 XPath 式を更新するためのアルゴリズムは、フォーム コードで適用される MatchPath 属性の InfoPathEventHandler パラメーターに格納されている値によって異なります。 XPath 式を更新するかどうかを確認するメッセージに応答する前に、これらの値を手動で削除した場合、InfoPath は XPath 式を自動的に更新できなくなります。 詳細については、「 InfoPath 2003 オブジェクト モデルを使用してイベント ハンドラーを追加する」を参照してください。

InfoPath 2003 互換オブジェクト モデルのメンバーを別のスレッドで呼び出すことができない

InfoPath 2003 互換オブジェクト モデルでは、別のスレッドでの呼び出しがサポートされていません。 たとえば、InfoPath オブジェクト モデルのメンバーを呼び出す LaunchOMFunction という関数を呼び出す次のコードは実行されません。

Thread th = new Thread(new ThreadStart(LaunchOMFunction));
th.Start();

必要に応じて、この制限を回避する方法があります。 詳細については、「 InfoPath 2003 オブジェクト モデルを使用した InfoPath プロジェクトでのスレッドサポート」を参照してください。

オプションのパラメーターを省略すると、Visual Basic および Visual C# でビルド エラーが発生する

InfoPath オブジェクト モデルのメンバーにオプションのパラメーターがある場合に、そのパラメーターの値を指定しないときは、代わりにそのパラメーターの Type.Missing フィールドを渡す必要があります。 実際の値を省略する場合に Type.Missing フィールドを渡さないと、ビルド エラーが発生します。 これは Visual Basic と Visual C# のどちらで書かれたコードにも当てはまります。 詳細と例については、「 InfoPath 2003 互換性のあるオブジェクト モデル 」トピックの「InfoPath オブジェクト モデル メンバーに省略可能なパラメーターを渡す」セクションを参照してください。

関連項目