次の方法で共有


IInfoPathViewControl インターフェイス

ビュー内にあるコントロールを表します。

名前空間: Microsoft.Office.Interop.InfoPath
アセンブリ: Microsoft.Office.Interop.InfoPath (microsoft.office.interop.infopath.dll 内)

構文

'宣言
<TypeLibTypeAttribute(384)> _
<ComConversionLossAttribute> _
<GuidAttribute("096CD6DA-0786-11D1-95FA-0080C78EE3BB")> _
<InterfaceTypeAttribute(1)> _
Public Interface IInfoPathViewControl
'使用
Dim instance As IInfoPathViewControl
[TypeLibTypeAttribute(384)] 
[ComConversionLossAttribute] 
[GuidAttribute("096CD6DA-0786-11D1-95FA-0080C78EE3BB")] 
[InterfaceTypeAttribute(1)] 
public interface IInfoPathViewControl

コメント

IInfoPathViewControl インターフェイスは、IInfoPathDataImporter インターフェイスと併用され、開発者はこのインターフェイスを使用して、ControlType および DataTypeTop および Left の位置、コントロールに関連付けられた XML NodeNameInputScopes など、ビュー内のコントロールの特定の情報を取得できます。Value プロパティは設定できる唯一のプロパティです。

ビューに存在する場合に列挙されるコントロールの一覧については、「IInfoPathDataImporterFields インターフェイス」の「GetControls メソッド」を参照してください。特定のコントロールで使用できる、指定できるデータ型の一覧については、「IInfoPathViewControl インターフェイス」の「Value プロパティ」を参照してください。

プログラムによる InfoPath フォームへのデータのインポートの詳細については、Microsoft Office 開発者センターの「InfoPath 開発者ポータル」を参照してください。

次の例では、IInfoPathDataImporter インターフェイスの Import メソッドを使用して、アクティブなフォームのビューにある IInfoPathViewControl コントロールの mshtml.IEnumUnknown コレクションを反復処理しています。

Import ルーチンはカスタム データ インポータの構築に使用されるソリューションの主要部分です。Visual Studio プロジェクトは、Microsoft Office InfoPath 2.0 タイプ ライブラリSystem.Windows.Forms への参照を必要とします。それぞれの Imports ステートメントおよび mshtml.Implements ステートメントは、IInfoPathDataImporterIInfoPathDataImporterFieldsIInfoPathViewControlIPropertyBag など、カスタム データ インポータ インターフェイスで提供されるメソッドの署名の生成に必要です。

メモメモ :

.NET クラス ライブラリを使用してデータ インポータを構築するには、クラス プロパティ エディタの [コンパイル] タブにある [COM の相互運用機能に登録] チェック ボックスをオンにします。

メモメモ :

カスタム データ インポータをデバッグするには、Visual Studio の [開始アクション] を Start an external program に設定し、<ドライブ>:\Program Files\Microsoft Office\Office12\ にある INFOPATH.EXE を参照します。このオプションは、クラス プロパティ エディタの [デバッグ] タブにあります。

Imports Microsoft.Office.Interop.InfoPath
Imports System.Windows.Forms
Imports mshtml

<ComClass(Class1.ClassId, Class1.InterfaceId, Class1.EventsId)> Public Class Class1
   Implements Microsoft.Office.Interop.InfoPath.IInfoPathDataImporter
   Implements Microsoft.Office.Interop.InfoPath.IInfoPathDataImporterFields
   Implements Microsoft.Office.Interop.InfoPath.IInfoPathViewControl
   Implements Microsoft.Office.Interop.InfoPath.IPropertyBag

   Public Const ClassId As String = _
      "1FEB0DF8-E7F1-4b21-A9EE-B06D5FECC572"
   Public Const InterfaceId As String = _
      "9F9F685C-71A0-46ec-A7F9-A86AF8CBC2A8"
   Public Const EventsId As String = _
      "ED7C0C49-3F89-40a2-A50E-C59E8F682B08" 

Public Sub Import(
   _ByVal pPrintSettings As Microsoft.Office.Interop.InfoPath.IPropertyBag, _
   ByVal punkViewControls As mshtml.IEnumUnknown) _
   Implements Microsoft.Office.Interop.InfoPath.IInfoPathDataImporter.Import

   Dim pControl As IInfoPathViewControl
   Dim pUnk As Object
   Dim pcelt As UInt16 = 1
   Dim pceltFetched As UInt16 = 0

   Try
      'Gets first control in the view
      punkViewControls.RemoteNext(pcelt, pUnk, pceltFetched)

      Do While pUnk.ToString() <> "Nothing"
         pControl = pUnk
         MessageBox.Show(pControl.ControlType)
         'Gets next control in the view
         punkViewControls.RemoteNext(pcelt, pUnk, pceltFetched)
      Loop
   Catch e As Exception
      If e.Message = _
         "Object reference not set to an instance of an object." Then
         ' Signals the end of the enumeration/controls in the view
      Else
         MessageBox.Show("Error: " & e.ToString & " " & e.Message)
      End If
   End Try
End Sub

関連項目

参照

IInfoPathViewControl のメンバ
Microsoft.Office.Interop.InfoPath 名前空間