Поделиться через


Инициализация и очистка кода с помощью объектной модели InfoPath 2003

По умолчанию файл FormCode.cs или FormCode.vb, который создается для проекта шаблона формы, совместимого с InfoPath 2003, содержит полный исходный код для программирования логики формы. Шаблон проекта создает класс в файле FormCode.cs или FormCode.vb, схожий с классами, приведенными в указанных далее примерах, где можно указать инициализацию и очистку кода, а также обработчики для событий формы. Файлы FormCode.cs и FormCode.vb применяют атрибут уровня сборки System.ComponentModel.DescriptionAttribute, который идентифицирует класс в качестве единственного класса, где реализуются обработчики событий. Атрибут InfoPathNamespace (который реализуется типом InfoPathNamespaceAttribute) применяется к классу для идентификации пространств имен выборки XML DOM, используемых в рамках класса. Пространства имен, указанные в InfoPathNamespace, обслуживаются системой проектов InfoPath.

Класс FormCode непосредственно предоставляет методы _Startup и _Shutdown, которые используются для выполнения процедур инициализации и очистки любых компонентов, которые требуются в дополнение к стандартным возможностям InfoPath во время открытия формы.

ЗаметкаВнимание!

Не вызывайте элементы объектной модели InfoPath из методов _Startup и _Shutdown. В этих методах следует выполнять инициализацию и вызов только элементов внешних компонентов.

using System;
using Microsoft.Office.Interop.InfoPath.SemiTrust;

// Office integration attribute. Identifies the startup class for the form. Do not
// modify.
[assembly: System.ComponentModel.DescriptionAttribute(
    "InfoPathStartupClass, Version=1.0, Class=Template1.FormCode")]

namespace Template1
{
    // The namespace prefixes defined in this attribute must remain synchronized with
    // those in the form definition file (.xsf).
    [InfoPathNamespace(
        "xmlns:my='https://schemas.microsoft.com/office/infopath/2003/myXSD/2004-03-29T22-27-27'")]
    public partial class FormCode
    {
        private XDocument thisXDocument;
        private Application thisApplication;

        public void _Startup(Application app, XDocument doc)
        {
            thisXDocument = doc;
            thisApplication = app;

            // You can add additional initialization code here.
        }

        public void _Shutdown()
        {
        }
    }
}
Imports System
Imports Microsoft.Office.Interop.InfoPath.SemiTrust
Imports Microsoft.VisualBasic

' Office integration attribute. Identifies the startup class for the form. Do not
' modify.
<Assembly: System.ComponentModel.DescriptionAttribute( _
    "InfoPathStartupClass, Version=1.0, Class=Template1.FormCode")>

Namespace Template1
    ' The namespace prefixes defined in this attribute must remain synchronized with
    ' those in the form definition file (.xsf).
    <InfoPathNamespace( _
        "xmlns:my='https://schemas.microsoft.com/office/infopath/2003/myXSD/2004-03-29T22-36-40'")> _
    Public Class FormCode

        Private thisXDocument As XDocument
        Private thisApplication As Application

        Public Sub _Startup(app As Application, doc As XDocument)
            thisXDocument = doc
            thisApplication = app

            ' You can add additional initialization code here.
        End Sub

        Public Sub _Shutdown()
        End Sub
    End Class
End Namespace

Метод _Startup

Помимо предоставления области для написания кода инициализации дополнительных компонентов, метод _Startup инициализирует переменные thisXDocument и thisApplication, которые можно использовать в коде формы для доступа к элементам классов XDocument и Application в объектной модели InfoPath. Код, необходимый для инициализации этих двух переменных, автоматически создается шаблоном проекта Visual Studio.

    private XDocument thisXDocument;
    private Application thisApplication;

    public void _Startup(Application app, XDocument doc)
    {
        thisXDocument = doc;
        thisApplication = app;

        // You can add additional initialization code here.
    }
    Private thisXDocument As XDocument
    Private thisApplication As Application

    Public Sub _Startup(app As Application, doc As XDocument)
        thisXDocument = doc
        thisApplication = app

        ' You can add additional initialization code here.
    End Sub

В следующих примерах демонстрируется простой обработчик событий для кнопки, использующей переменную thisXDocument для доступа к методу Alert типа UIObject.

[InfoPathEventHandler(MatchPath="CTRL1_5", EventType=InfoPathEventType.OnClick)]
public void CTRL1_5_OnClick(DocActionEvent e)
{
    // Write your code here.
    thisXDocument.UI.Alert("Hello!");
}
<InfoPathEventHandler(MatchPath:="CTRL1_5", EventType:=InfoPathEventType.OnClick)> _
Public Sub CTRL1_5_OnClick(ByVal e As DocActionEvent)
    ' Write your code here.
    thisXDocument.UI.Alert("Hello!")
End Sub

Сведения о создании обработчика событий см. в статье Практическое руководство. Добавление обработчика событий с помощью объектной модели InfoPath 2003.

Метод _ShutDown

Метод _Shutdown является последним методом, вызываемым при закрытии формы. В этом методе можно написать любой код, необходимый для очистки и завершения компонентов, используемых в форме.

    public void _Shutdown()
    {
    }
    Public Sub _Shutdown()
    End    Sub

Пример кода инициализации и очистки

В следующем примере демонстрируется инициализация подключения к базе данных Microsoft SQL Server™ в методе _Startup и закрытие подключения в методе _Shutdown. Чтобы этот пример работал правильно, необходимо сначала указать ссылку на сборку System.Data для платформы .NET Framework, выбрав пункт Добавить ссылку в меню Проект, а затем выбрав компонент System.Data.dll на вкладке .NET. Кроме того, обратите внимание, что вверху файла кода формы добавлена директива using System.Data.SqlClient (или Imports System.Data.SqlClient) для уменьшения числа нажатий клавиш.

ЗаметкаЗаметка

Пользователям формы InfoPath, содержащей код формы для подключения к базе данных SQL Server, могут потребоваться разрешения безопасности, зависящие от метода развертывания формы и определения политики безопасности. Дополнительные сведения о безопасности см. в статьях Модель безопасности для шаблонов форм с управляемым кодом и Практическое руководство. Настройка параметров безопасности для шаблонов форм с управляемым кодом.

using System;
using System.Data.SqlClient;
using Microsoft.Office.Interop.InfoPath.SemiTrust;

// Office integration attribute. Identifies the startup class for the form. Do not
// modify.
[assembly: System.ComponentModel.DescriptionAttribute(
    "InfoPathStartupClass, Version=1.0, Class=Template1.FormCode")]

namespace Template1
{
    // The namespace prefixes defined in this attribute must remain synchronized with
    // those in the form definition file (.xsf).
    [InfoPathNamespace(
        "xmlns:my='https://schemas.microsoft.com/office/infopath/2003/myXSD/2004-03-05T20-56-13'")]
    public partial class Template1
    {
        private XDocument    thisXDocument;
        private Application    thisApplication;
        private SqlConnection sqlConnect;

        public void _Startup(Application app, XDocument doc)
        {
            thisXDocument = doc;
            thisApplication = app;

            // Initialize variable for SQL Server connection.
            sqlConnect= new SqlConnection("server=localhost;Trusted_Connection=yes;database=Northwind");
        }

        public void _Shutdown()
        {
            // Close SQL Server connection at shut down.
            sqlConnect.Close();
        }
    }
}
Imports System
Imports System.Data.SqlClient
Imports Microsoft.Office.Interop.InfoPath.SemiTrust
Imports Microsoft.VisualBasic

' Office integration attribute. Identifies the startup class for the form. Do not
' modify.
<Assembly: System.ComponentModel.DescriptionAttribute( _
    "InfoPathStartupClass, Version=1.0, Class=Template1.FormCode")>

Namespace Template1
        ' The namespace prefixes defined in this attribute must remain synchronized with
        ' those in the form definition file (.xsf).
        <InfoPathNamespace( _
            "xmlns:my='https://schemas.microsoft.com/office/infopath/2003/myXSD/2004-03-08T18-47-33'")>        _
        Public Class Template1

            Private thisXDocument As XDocument
            Private thisApplication As Application
            Private sqlConnect As SqlConnection

            Public Sub _Startup(app As Application, doc As XDocument)
                thisXDocument = doc
                thisApplication = app

                ' Initialize variable for SQL Server connection.
                sqlConnect = New SqlConnection _("server=localhost;Trusted_Connection=yes;database=Northwind")
            End Sub

        Public Sub _Shutdown()
            ' Close SQL Server connection.
            sqlConnect.Close()
        End Sub
    End Class
End Namespace

См. также

Задачи

Практическое руководство. Добавление обработчика событий с помощью объектной модели InfoPath 2003