次の方法で共有


_XDocumentEventSink2_Event.OnLoad イベント

Microsoft Office InfoPath 2007 フォームが読み込まれた後、いずれのビューも初期化される前に発生します。

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

構文

'宣言
Event OnLoad As _XDocumentEventSink2_OnLoadEventHandler
'使用
Dim instance As _XDocumentEventSink2_Event
Dim handler As _XDocumentEventSink2_OnLoadEventHandler

AddHandler instance.OnLoad, handler
event _XDocumentEventSink2_OnLoadEventHandler OnLoad

コメント

このイベント ハンドラでは、ユーザーが操作をキャンセルできます。

DocReturnEventObject オブジェクトの ReturnStatus プロパティが false に設定されている場合は、フォームの読み込みがキャンセルされます。OnLoad イベントに関するコードでエラーが発生した場合は、そのエラーが無視され、ReturnStatus プロパティに応じて処理が実行されます。ReturnStatus プロパティが明示的に設定されていない場合は、既定値 true が使用されます。

メモメモ :

OnLoad イベントが発生しても、ビューは初期化されず、ビューの XSL 変換 (XSLT) も読み込まれません。XDocument オブジェクトは、OnLoad イベントが完了するまで、XDocumentsCollection コレクションに追加されません。ただし、XDocument オブジェクトは OnLoad イベントの発生中でも使用できます。

メモ重要 :

このイベントには、完全信頼のセキュリティ レベルが必要です。このセキュリティ レベルを設定するには、InfoPath デザイン ウィンドウで [ツール] メニューの [フォームのオプション] をクリックし、[セキュリティ] タブの [完全信頼] をクリックします。あらかじめ完全信頼フォームをインストールまたはデジタル署名しておく必要があります。

次の例では、OnLoad イベント ハンドラを使用して、フォームがデジタル署名されているかどうかを確認し、まだ署名されていない場合は、あらかじめ用意されている関数とカスタム関数を併用して日付をいくつか初期化しています。

[InfoPathEventHandler(EventType=InfoPathEventType.OnLoad)]
public void OnLoad(DocReturnEvent e)
{ 
 // Avoid DOM updates when the document has been digitally signed.
 if (thisXDocument.IsSigned)
 {
  return;
 }

 string today = thisXDocument.Util.Date.Today().ToString();
 initializeNodeValue("/sls:salesReport/sls:date", today);
}

この Onload イベント ハンドラの例では、initializeNodeValue と setNodeValue の 2 つのカスタム関数に処理を依存しています。

private void initializeNodeValue(string xpath, string strValue)
{
 IXMLDOMNode xmlNode = thisXDocument.DOM.selectSingleNode(xpath);
 // Set the node value *ONLY* if the node is empty.
 if (xmlNode.text == "")
 {
  setNodeValue(xmlNode, strValue);
 }
}

private void setNodeValue(IXMLDOMNode xmlNode, string strValue)
{   
 if (xmlNode == null)
 {
  return;
 }

 // The xsi:nil needs to be removed before we set the value.
 if (strValue != "" && xmlNode.attributes.getNamedItem("xsi:nil") != null)
 {
  xmlNode.attributes.removeNamedItem("xsi:nil");
 }

 // Setting the value would mark the document as dirty.
 // Let's do that if the value has really changed.
 if (xmlNode.text != strValue)
 {
  xmlNode.text = strValue;
 }
}

関連項目

参照

_XDocumentEventSink2_Event インターフェイス
_XDocumentEventSink2_Event のメンバ
Microsoft.Office.Interop.InfoPath.SemiTrust 名前空間