Share via


Tutorial: Creación y depuración de una plantilla de formulario básica mediante el modelo de objetos de InfoPath

En este tema se proporciona un tutorial para crear una plantilla básica de formulario de código administrado de InfoPath que funciona con el modelo de objetos compatible con InfoPath 2003 proporcionado por el espacio de nombres Microsoft.Office.Interop.InfoPath.SemiTrust .

Hola a todos

En el ejemplo siguiente, aprenderá a mostrar un cuadro de diálogo de alerta simple mediante el método Alert del modelo de objetos compatible con InfoPath 2003.

Crear una plantilla de formulario de InfoPath que funciona con el modelo de objetos compatible con InfoPath 2003

  1. Cree una plantilla de formulario que funcione con el modelo de objetos compatible con InfoPath 2003, como se describe en Creación de una plantilla de formulario mediante el modelo de objetos de InfoPath 2003.

  2. Asigne al proyecto de plantilla de formulario el nombre HelloWorld y guárdelo.

    El sistema de proyectos crea el código y los archivos del proyecto y, a continuación, abre una plantilla de formulario en blanco en el modo de diseño de InfoPath. Ya está listo para añadir controladores de eventos.

Agregar un botón con un controlador de eventos OnClick

  1. En la sección Controles de la ficha Inicio, haga clic en el control Botón para insertarlo en la vista.

  2. Haga clic con el botón secundario del mouse en el control y a continuación haga clic en Propiedades del botón.

  3. Cambie la etiqueta a Alerta.

  4. Cambie el identificador a AlertID.

  5. Haga clic en Editar código del formulario.

    Se crea un esqueleto del controlador de eventos para el evento OnClick y el foco se mueve al editor de código de Visual Studio 2012. Para obtener más información sobre cómo trabajar con controladores de eventos, vea Agregar un controlador de eventos mediante el modelo de objetos de InfoPath 2003.

    Ya está todo preparado para agregar el código de formulario al controlador de eventos del botón.

Agregar código de formulario al controlador de eventos

  1. En el controlador de eventos OnClick, escriba el código siguiente:

     thisXDocument.UI.Alert("Hello World!");
    
     thisXDocument.UI.Alert("Hello World!")
    

    Observe que aparece una lista desplegable de Microsoft IntelliSense cada vez que se escribe un punto en la línea de código. La función completa del controlador de eventos debe tener el siguiente aspecto:

     [InfoPathEventHandler(MatchPath="AlertID", EventType=InfoPathEventType.OnClick)]
     public void AlertID_OnClick(DocActionEvent e)
     {
         thisXDocument.UI.Alert("Hello World!");
     }
    
     <InfoPathEventHandler(MatchPath:="AlertID", EventType:=InfoPathEventType.OnClick)>
     Public Sub AlertID_OnClick(ByVal e As DocActionEvent)
         thisXDocument.UI.Alert("Hello World!")
     End Sub
    

    Nota:

    Como alternativa al método Alert, puede utilizar el método MessageBox.Show del espacio de nombres System.Windows.Forms para mostrar un cuadro de mensajes. Para ello, debe agregar una referencia al ensamblado System.Windows.Forms, agregar using System.Windows.Forms; o Imports System.Windows.Forms a las directivas al principio del archivo de código y, a continuación, escribir una línea de código como la siguiente: MessageBox.Show("Hello World!); or MessageBox.Show("Hello World!)

  2. Cambie a la ventana de modo de diseño de InfoPath y haga clic en el botón Vista previa de la ficha Inicio.

  3. En la ventana Vista previa, haga clic en el botón Aviso.

    Aparecerá un cuadro de mensaje con el texto "Hello World".

    El procedimiento siguiente muestra cómo agregar puntos de interrupción para depurar el código del formulario.

Depurar el código del formulario

  1. En el editor de código, haga clic en la barra gris que se encuentra a la izquierda de esta línea:

     thisXDocument.UI.Alert("Hello World!");
    
     thisXDocument.UI.Alert("Hello World!")
    

    Aparecerá un círculo rojo y la línea de código se resaltará para indicar que se hará una pausa en el tiempo de ejecución al llegar a este punto de interrupción en el código del formulario.

  2. En el menú Depurar, haga clic en Iniciar depuración (o presione F5).

  3. En la ventana Vista previa de InfoPath, haga clic en el botón Aviso.

    El foco se desplazará al editor de código y se resaltará la línea en la que se encuentra el punto de interrupción.

  4. En el menú Depurar, haga clic en Paso a paso por procedimientos (o presione Mayús+F8) para continuar depurando el código paso a paso.

    El código del método Alert se ejecuta y aparece el aviso "Hello World" en la ventana Vista previa de InfoPath.

Obtener el nombre del usuario actual

Puede utilizar las clases de .NET Framework para obtener acceso a funciones de las que no se puede disponer con facilidad en las secuencias de comandos. En este ejemplo, aprenderá cómo utilizar las clases de .NET Framework para recuperar el nombre del usuario actual.

Agregar un controlador de eventos OnLoad

  1. Abra el proyecto HelloWorld de InfoPath que acaba de crear.

  2. En la ficha Ver, haga clic en Mostrar campos.

  3. Haga clic con el botón secundario en el nodo myFields y, a continuación, haga clic en Agregar.

  4. En Nombre, escriba empleado y haga clic en Aceptar.

  5. Arrastre el nodo empleado hasta la vista.

  6. En la ficha Programador, haga clic en Evento Al cargar (OnLoad).

    Esto creará un controlador de eventos para el evento OnLoad y el foco se mueve al editor de código. Se puede llamar al código de este controlador de eventos cada vez que se cargue el formulario. El procedimiento siguiente muestra cómo agregar código de formulario que recupere el nombre del usuario para el controlador de eventos.

Agregar código de formulario

  1. En el controlador de eventos OnLoad, escriba el código siguiente:

     // Store an XML DOM node as a local variable.
     IXMLDOMNode nodeEmployee = thisXDocument.DOM.selectSingleNode("my:myFields/my:employee");
     if(nodeEmployee != null)
     {
         if(nodeEmployee.text == "")
         {
         // If the employee name is blank when the form is loaded, 
         // populate the employee node with the current user name.
         nodeEmployee.text = System.Environment.UserName;
         }
     }
    
     // Store an XML DOM node as a local variable.
     Dim nodeEmployee As IXMLDOMNode
     nodeEmployee = thisXDocument.DOM.selectSingleNode("my:myFields/my:employee");
     If Not(nodeEmployee Is Nothing) Then
         If(nodeEmployee.text = "") Then
         // If the employee name is blank when the form is loaded, 
         // populate the employee node with the current user name.
         nodeEmployee.text = System.Environment.UserName
         End If
     End If
    
  2. Compile el formulario y obtenga una vista previa del mismo.

    El nombre de usuario debería aparecer ahora en el cuadro de texto Empleado.

Para obtener información sobre cómo implementar una plantilla de formulario de código administrado, consulte Implementación de plantillas de formulario de InfoPath con código. Para obtener información sobre el modelo de objetos de InfoPath y las tareas de programación comunes en plantillas de formulario de código administrado que funcionan con el modelo de objetos compatible con InfoPath 2003, consulte Descripción del modelo de objetos de InfoPath 2003.

Vea también