Compartir a través de


Tutorial: Importar un área de formulario diseñada en Outlook

En este tutorial se muestra cómo diseñar un área de formulario en Microsoft Office Outlook y cómo importarla a continuación a un proyecto de complemento de Outlook mediante el asistente para nueva área de formulario.Al diseñar el área de formulario en Outlook se pueden agregar controles nativos de Outlook a dicha área que se enlazan a datos de Outlook.Después de importar el área de formulario, puede controlar los eventos de cada control.

Se aplica a: La información de este tema se aplica a los proyectos de nivel de aplicación para Outlook 2013 y Outlook 2010. Para obtener más información, vea Características disponibles por aplicación y tipo de proyecto de Office.

En este tutorial se muestran las tareas siguientes:

  • Diseñar un área de formulario mediante el Diseñador de áreas de formulario de Outlook.

  • Importar un área de formulario en un proyecto de complemento de Outlook.

  • Controlar los eventos de los controles en el área de formulario.

[!NOTA]

Es posible que su equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio incluidos en las instrucciones siguientes. La edición de Visual Studio que se tenga y la configuración que se utilice determinan estos elementos. Para obtener más información, vea Valores de configuración de Visual Studio.

Requisitos previos

Necesita los componentes siguientes para completar este tutorial:

-

Una edición de Visual Studio 2012 que incluye las herramientas para desarrolladores de Microsoft Office. Para obtener más información, vea [Configurar un equipo para desarrollar soluciones de Office](bb398242\(v=vs.110\).md).
  • Outlook 2013 o Outlook 2010.

[!NOTA]

Es posible que su equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio en las siguientes instrucciones.La edición de Visual Studio que tenga y la configuración que esté usando determinan estos elementos.Para obtener más información, vea Valores de configuración de Visual Studio.

vínculo a vídeo Dispone de una demostración en vídeo relacionada en How Do I: Create Outlook Form Regions Using Visual Studio 2008?.

Diseñar un área de formulario mediante el Diseñador de áreas de formulario de Outlook

En este paso diseñará un área de formulario en Outlook.A continuación, guardará el área de formulario en una ubicación fácil de encontrar para poder importarla en Visual Studio.

Esta área de formulario de ejemplo reemplaza por completo al formulario de tareas habitual.Proporciona una forma de realizar un seguimiento del progreso de todas las tareas que deben completarse (tareas necesarias) para poder realizar la tarea principal.El área de formulario muestra una lista de las tareas necesarias, además del estado de finalización de cada tarea de la lista.Los usuarios pueden agregar tareas a la lista y quitarlas.También pueden actualizar el estado de finalización de cada tarea.

Para diseñar un área de formulario mediante el Diseñador de áreas de formulario de Outlook

  1. Inicie Microsoft Office Outlook.

  2. En Outlook, en la ficha Desarrollador , haga clic Diseñar un formulario.Para obtener más información, vea Cómo: Mostrar la pestaña Programador en la cinta de opciones.

  3. En el cuadro Diseñar formulario, haga clic en Tarea y, a continuación, en Abrir.

  4. En Outlook, en la ficha Desarrollador , en el grupo Diseño , haga clic Nueva área de formulario.

    Se abre una nueva área de formulario.Si no aparece el Selector de campos, en el grupo Herramientas haga clic en Selector de campos.

  5. Arrastre los campos Asunto y % completado desde el Selector de campos al área de formulario.

  6. En el grupo Herramientas, haga clic en Cuadro de controles para abrir el Cuadro de herramientas.

  7. Arrastre una etiqueta del Cuadro de herramientas al área de formulario.Coloque la etiqueta debajo de los campos Asunto y % completado.

  8. Haga clic con el botón secundario en la etiqueta y, a continuación, haga clic en Propiedades avanzadas.

  9. En la ventana Propiedades, establezca la propiedad Caption en Esta tarea depende de las siguientes, establezca la propiedad Width en 200 y, a continuación, haga clic en Aplicar.

  10. Arrastre un control ListBox del Cuadro de herramientas al área de formulario.Coloque el cuadro de lista debajo de la etiqueta Esta tarea depende de las siguientes.

  11. Seleccione el cuadro de lista que acaba de agregar.

  12. En la ventana Propiedades, establezca Width en 300 y, a continuación, haga clic en Aplicar.

  13. Arrastre una etiqueta del Cuadro de herramientas al área de formulario.Coloque la etiqueta debajo del cuadro de lista.

  14. Seleccione la etiqueta que acaba de agregar.

  15. En la ventana Propiedades, establezca la propiedad Caption en Seleccionar una tarea para agregarla a la lista de tareas dependientes, establezca la propiedad Width en 200 y, a continuación, haga clic en Aplicar.

  16. Arrastre un control ComboBox del Cuadro de herramientas al área de formulario.Coloque el cuadro combinado debajo de la etiqueta Seleccionar una tarea para agregarla a la lista de tareas dependientes.

  17. Seleccione el cuadro combinado que acaba de agregar.

  18. En la ventana Propiedades, establezca la propiedad Width en 300 y, a continuación, haga clic en Aplicar.

  19. Arrastre un control CommandButton desde el Cuadro de herramientas hasta el área de formulario.Coloque el botón de comando junto al cuadro combinado.

  20. Seleccione el botón de comando que acaba de agregar.

  21. En la ventana Propiedades, establezca Name en AgregarTareaDependiente, Caption en Agregar tarea dependiente y Width en 100; a continuación, haga clic en Aplicar.

  22. En el Selector de campos, haga clic en Nuevo.

  23. En el cuadro de diálogo Nuevo campo, escriba CampoOculto en el campo Nombre y, a continuación, haga clic en Aceptar.

  24. Arrastre el campo CampoOculto del Selector de campos al área de formulario.

  25. En la ventana Propiedades, establezca la propiedad Visible en 0 - False y, a continuación, haga clic en Aplicar.

  26. En Outlook, en la ficha Desarrollador , en el grupo Diseño , haga clic en el botón Guardar , y haga clic en Guarde el área de formulario como.

    Asigne el nombre áreaFormularioDe Tarea al área de formulario y guárdela en un directorio local del equipo.

    Outlook guarda el área de formulario como archivo de almacén de formularios de Outlook (.ofs).Dicha área se guarda con el nombre TaskFormRegion.ofs.

  27. Salga de Outlook.

Crear un nuevo proyecto de complemento de Outlook

En este paso creará un proyecto de complemento de Outlook.Más adelante en este tutorial, se importará el área de formulario en el proyecto.

Para crear un nuevo proyecto de complemento de Outlook

  1. En Visual Studio, cree un proyecto de complemento de Outlook con el nombre TaskAddIn.

  2. En el cuadro de diálogo Nuevo proyecto, seleccione Crear directorio para la solución.

  3. Guarde el proyecto en el directorio de proyectos predeterminado.

    Para obtener más información, vea Cómo: Crear proyectos de Office en Visual Studio.

Importar el área de formulario

Puede importar el área de formulario diseñada en Outlook en el proyecto de complemento de Outlook mediante el asistente Nueva área de formulario de Outlook.

Para importar el área de formulario en el proyecto de complemento de Outlook

  1. En el Explorador de soluciones, haga clic con el botón secundario en el proyecto TaskAddIn, seleccione Agregar y, a continuación, haga clic en Nuevo elemento.

  2. En el panel Plantillas, seleccione Área de formulario de Outlook, asigne el nombre TaskFormRegion al archivo y, a continuación, haga clic en Agregar.

    Se inicia el asistente Nuevaárea de formulario de Outlook.

  3. En la página Seleccione cómo desea crear el área de formulario, haga clic en **Importar archivo de almacén de formulario de Outlook (.ofs)**y, a continuación, haga clic en Examinar.

  4. En el cuadro de diálogo Ubicación de archivo de área de formulario de Outlook existente, desplácese a la ubicación de TaskFormRegion.ofs, seleccione TaskFormRegion.ofs, haga clic en Abrir y, a continuación, en Siguiente.

  5. En la página Seleccione el tipo de área de formulario que desea crear, haga clic en Reemplazo total y, a continuación, en Siguiente.

    Un área de formulario de reemplazo total reemplaza el formulario de Outlook al completo.Para obtener más información sobre los tipos de áreas de formulario, vea Crear áreas de formulario de Outlook.

  6. En la página Proporcione texto descriptivo y seleccione sus preferencias de presentación, haga clic en Siguiente.

  7. En la página Identifique las clases de mensaje que mostrarán esta área de formulario, en el campo ¿Qué clases de mensaje personalizadas mostrarán esta área de formulario?, escriba IPM.Task.TaskFormRegion y, a continuación, haga clic en Finalizar.

    Se agregará un archivo TaskFormRegion.cs o TaskFormRegion.vb al proyecto.

Controlar los eventos de los controles en el área de formulario

Ahora que ha incluido el área de formulario en el proyecto, puede agregar código que controle el evento Microsoft.Office.Interop.Outlook.OlkCommandButton.Click del botón que agregó al área de formulario en Outlook.

Además, agregue el código al evento FormRegionShowing para actualizar los controles del área de formulario cuando ésta aparece.

Para controlar los eventos de los controles en el área de formulario

  1. En el Explorador de soluciones, haga clic con el botón secundario en TaskFormRegion.cs o TaskFormRegion.vb y, a continuación, haga clic en Ver código.

    Se abre TaskFormRegion.cs o TaskFormRegion.vb en el Editor de código.

  2. Agregue el código siguiente a la clase TaskFormRegion.El código rellena el cuadro combinado del área de formulario con la línea de asunto de cada tarea de la carpeta Tareas de Outlook.

    Private Sub populateComboBox()
        Dim Application As New Outlook.Application()
        Dim outlookNameSpace As Outlook.NameSpace = _
        Application.GetNamespace("MAPI")
        Dim taskFolder As Outlook.MAPIFolder = _
        outlookNameSpace.GetDefaultFolder _
            (Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderTasks)
        Dim taskItems As Outlook.Items = taskFolder.Items
        Dim task As Outlook.TaskItem
        For Each task In taskItems
            If Not (task.Subject Is Nothing) Then
                comboBox1.AddItem(task.Subject, System.Type.Missing)
            End If
        Next task
        comboBox1.Text = comboBox1.GetItem(0)
    End Sub
    
    private void populateComboBox()
    {
        Outlook.Application Application = new Outlook.Application();
        Outlook.NameSpace outlookNameSpace = Application.GetNamespace("MAPI");
        Outlook.MAPIFolder taskFolder = outlookNameSpace.GetDefaultFolder(
            Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderTasks);
        Outlook.Items taskItems = taskFolder.Items;
        foreach (Outlook.TaskItem task in taskItems)
        {
            if (task.Subject != null)
            {
                comboBox1.AddItem(task.Subject, System.Type.Missing);
            }
        }
        comboBox1.Text = comboBox1.GetItem(0);
    }
    
  3. Agregue el código siguiente a la clase TaskFormRegion.Este código realiza las tareas siguientes:

    • Busca Microsoft.Office.Interop.Outlook.TaskItem en la carpeta Tareas llamando al método auxiliar FindTaskBySubjectName y pasando el asunto de la tarea deseada.En el paso siguiente se agregará el método auxiliar FindTaskBySubjectName.

    • Agrega los valores Microsoft.Office.Interop.Outlook.TaskItem.Subject y Microsoft.Office.Interop.Outlook.TaskItem.PercentComplete al cuadro de lista de tareas dependientes.

    • Agrega el asunto de la tarea al campo oculto del área de formulario.El campo oculto almacena estos valores como parte del elemento de Outlook.

    Private Sub AddDependentTask_Click1() Handles addDependentTask.Click
        Dim tempTaskItem As Outlook.TaskItem = FindTaskBySubjectName _
            (comboBox1.Text)
        If Not (tempTaskItem Is Nothing) Then
            Me.listBox1.AddItem(tempTaskItem.PercentComplete.ToString() & _
                "% Complete -- " & tempTaskItem.Subject, System.Type.Missing)
            Me.olkTextBox3.Text = Me.olkTextBox3.Text & "|" & tempTaskItem.Subject
        End If
    End Sub
    
        void AddDependentTask_Click()
        {
            Outlook.TaskItem tempTaskItem = FindTaskBySubjectName(comboBox1.Text);
            if (tempTaskItem != null)
            {
                this.listBox1.AddItem(tempTaskItem.PercentComplete.ToString()
    + "% Complete -- " + tempTaskItem.Subject, System.Type.Missing);
                this.olkTextBox3.Text = this.olkTextBox3.Text + "|" + 
                    tempTaskItem.Subject;
            }
        }
    
  4. Agregue el código siguiente a la clase TaskFormRegion.Este código proporciona el método auxiliar FindTaskBySubjectName descrito en el paso anterior.

    Private Function FindTaskBySubjectName(ByVal subjectName As String) _
        As Outlook.TaskItem
        Dim Application As New Outlook.Application()
        Dim outlookNameSpace As Outlook.NameSpace = _
            Application.GetNamespace("MAPI")
        Dim tasksFolder As Outlook.MAPIFolder = _
            outlookNameSpace.GetDefaultFolder _
                (Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderTasks)
        Dim taskItems As Outlook.Items = tasksFolder.Items
        Dim taskItem As Outlook.TaskItem
        For Each taskItem In taskItems
            If taskItem.Subject = subjectName Then
                Return taskItem
            End If
        Next taskItem
        Return Nothing
    End Function
    
    private Outlook.TaskItem FindTaskBySubjectName(string subjectName)
    {
        Outlook.Application Application = new Outlook.Application();
        Outlook.NameSpace outlookNameSpace = Application.GetNamespace("MAPI");
        Outlook.MAPIFolder tasksFolder =
            outlookNameSpace.GetDefaultFolder(
        Microsoft.Office.Interop.Outlook.
            OlDefaultFolders.olFolderTasks);
        Outlook.Items taskItems = tasksFolder.Items;
        foreach (Outlook.TaskItem taskItem in taskItems)
        {
            if (taskItem.Subject == subjectName)
            {
                return taskItem;
            }
        }
        return null;
    }
    
  5. Agregue el código siguiente a la clase TaskFormRegion.Este código realiza las tareas siguientes:

    • Actualiza el cuadro de lista del área de formulario con el estado de finalización actual de cada tarea dependiente.

    • Analiza el campo de texto oculto para obtener el asunto de cada tarea dependiente.A continuación, busca los elementos Microsoft.Office.Interop.Outlook.TaskItem en la carpeta Tareas llamando al método auxiliar FindTaskBySubjectName y pasando el asunto de cada tarea.

    • Agrega los valores Microsoft.Office.Interop.Outlook.TaskItem.Subject y Microsoft.Office.Interop.Outlook.TaskItem.PercentComplete al cuadro de lista de tareas dependientes.

    Private Sub RefreshTaskListBox()
        listBox1.Clear()
        Dim tempTaskItem As Outlook.TaskItem
        Dim tempArray As [String]() = olkTextBox3.Text.Split(New [Char]() {"|"c})
    
        Dim tempString As String
        For Each tempString In tempArray
            tempTaskItem = FindTaskBySubjectName(tempString)
            If Not (tempTaskItem Is Nothing) Then
                Me.listBox1.AddItem(tempTaskItem.PercentComplete.ToString() & _
                    "% Complete -- " & tempTaskItem.Subject, System.Type.Missing)
            End If
        Next tempString
    End Sub
    
    void RefreshTaskListBox()
    {
        listBox1.Clear();
        Outlook.TaskItem tempTaskItem;
        String[] tempArray = olkTextBox3.Text.Split(new Char[] { '|' });
    
        foreach (string tempString in tempArray)
        {
            tempTaskItem = FindTaskBySubjectName(tempString);
            if (tempTaskItem != null)
            {
                this.listBox1.AddItem(tempTaskItem.PercentComplete.ToString()
                    + "% Complete -- " + tempTaskItem.Subject, 
                        System.Type.Missing);
            }
        }
    }
    
  6. Reemplace el controlador de evento TaskFormRegion_FormRegionShowing con el código siguiente.Este código realiza las tareas siguientes:

    • Rellena el cuadro combinado del área de formulario con los asuntos de las tareas cuando aparece dicha área.

    • Llama al método auxiliar RefreshTaskListBox cuando aparece el área de formulario.Éste muestra cualquier tarea dependiente agregada al cuadro de lista cuando se abrió el elemento previamente.

    Private Sub TaskFormRegion_FormRegionShowing(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles MyBase.FormRegionShowing
        populateComboBox()
        RefreshTaskListBox()
    End Sub
    
    private void TaskFormRegion_FormRegionShowing
        (object sender, EventArgs e)
    {
        populateComboBox();
        RefreshTaskListBox();
        this.addDependentTask.Click += new
        Microsoft.Office.Interop.Outlook.
            OlkCommandButtonEvents_ClickEventHandler(AddDependentTask_Click);
    
    }
    

Comprobar el área de formulario de Outlook

Para comprobar el área de formulario, agregue tareas a la lista de tareas necesarias en el área de formulario.Actualice el estado de finalización de una tarea necesaria y, a continuación, vea el estado de finalización actualizado de la tarea en la lista de tareas necesarias.

Para comprobar el área de formulario

  1. Presione F5 para ejecutar el proyecto.

    Se inicia Outlook.

  2. En Outlook, en la ficha Inicio , haga clic Nuevos elementos, y haga clic en Tarea.

  3. En el formulario de tareas, escriba Tarea dependiente en el campo Asunto.

  4. En la ficha Tarea de la cinta de opciones, en el grupo Acciones, haga clic en Guardar y cerrar.

  5. En Outlook, en la ficha Inicio , haga clic Nuevos elementos, haga clic en Varios elementos, y haga clic en Elegir formulario.

  6. En el cuadro de diálogo Elegir formulario, haga clic en TaskFormRegiony, a continuación, en Abrir.

    Aparecerá el área del formulario TaskFormRegion.Este formulario reemplaza a todo el formulario de tareas.El cuadro combinado Seleccionar una tarea para agregarla a la lista de tareas dependientes se rellena con otras tareas de la carpeta Tareas.

  7. En el campo Asunto del formulario de tareas, escriba Tarea principal.

  8. En el cuadro combinado Seleccionar una tarea para agregarla a la lista de tareas dependientes, seleccione Tarea dependiente y, a continuación, haga clic en Agregar tarea dependiente.

    0% completado - Tarea dependiente aparece en el cuadro de lista Esta tarea depende de las siguientes.Esto demuestra que ha controlado correctamente el evento Microsoft.Office.Interop.Outlook.OlkCommandButton.Click del botón.

  9. Guarde el elemento Tarea principal y ciérrelo.

  10. Vuelva a abrir el elemento Tarea dependiente en Outlook.

  11. En el formulario Tarea dependiente, cambie el campo % completado a 50%.

  12. En la pestaña Tarea de la Cinta de tareas dependientes, en el grupo Acciones, haga clic en Guardar y cerrar.

  13. Vuelva a abrir el elemento Tarea principal en Outlook.

    Ahora aparece 50% completado - Tarea dependiente en el cuadro de lista Esta tarea depende de las siguientes.

Pasos siguientes

Puede obtener más información sobre cómo personalizar la interfaz de usuario de una aplicación de Outlook en estos temas:

Vea también

Tareas

Tutorial: Diseñar un área de formulario de Outlook

Cómo: Agregar un área de formulario a un proyecto de complemento de Outlook

Cómo: Impedir que Outlook muestre un área de formulario

Conceptos

Obtener acceso a un área de formulario en tiempo de ejecución

Instrucciones para crear áreas de formulario de Outlook

Asociar un área de formulario a una clase de mensaje de Outlook

Acciones personalizadas en áreas de formulario de Outlook

Otros recursos

Crear áreas de formulario de Outlook