Инициализация и очистка кода с помощью объектной модели 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 из методов |
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