次の方法で共有


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

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

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

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

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

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

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

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

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

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

複数のフォームを開いているときに、Visual Studio の [プロセス] ダイアログ ボックスに InfoPath プロセスが 1 つしか表示されない

編集モードで複数の InfoPath フォームを開いているときに、Visual Studio を開いて [ツール] メニューの [デバッグ処理] をクリックすると、[プロセス] ダイアログ ボックスの [選択可能なプロセス] ボックスの一覧に INFOPATH.EXE のインスタンスが 1 つしか表示されません。これは意図的なものです。一覧には、INFOPATH.EXE プロセスの最上位のウィンドウのみが表示されます。ただし、すべての InfoPath ウィンドウが同じプロセスで実行され、デバッガにアタッチされています。

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

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

関連項目

概念

マネージ コード フォーム テンプレートのセキュリティ モデルについて
[方法] InfoPath プロジェクトを展開する方法
[方法] InfoPath 2003 オブジェクト モデルを使用してエラーを処理する方法
[方法] 完全信頼が必要なマネージ コード フォーム テンプレートをプレビューおよびデバッグする方法
[方法] InfoPath 2003 オブジェクト モデルを使用して InfoPath プロジェクトをデバッグする方法