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.
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
Inicie Microsoft Office Outlook.
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.
En el cuadro Diseñar formulario, haga clic en Tarea y, a continuación, en Abrir.
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.
Arrastre los campos Asunto y % completado desde el Selector de campos al área de formulario.
En el grupo Herramientas, haga clic en Cuadro de controles para abrir el Cuadro de herramientas.
Arrastre una etiqueta del Cuadro de herramientas al área de formulario.Coloque la etiqueta debajo de los campos Asunto y % completado.
Haga clic con el botón secundario en la etiqueta y, a continuación, haga clic en Propiedades avanzadas.
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.
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.
Seleccione el cuadro de lista que acaba de agregar.
En la ventana Propiedades, establezca Width en 300 y, a continuación, haga clic en Aplicar.
Arrastre una etiqueta del Cuadro de herramientas al área de formulario.Coloque la etiqueta debajo del cuadro de lista.
Seleccione la etiqueta que acaba de agregar.
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.
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.
Seleccione el cuadro combinado que acaba de agregar.
En la ventana Propiedades, establezca la propiedad Width en 300 y, a continuación, haga clic en Aplicar.
Arrastre un control CommandButton desde el Cuadro de herramientas hasta el área de formulario.Coloque el botón de comando junto al cuadro combinado.
Seleccione el botón de comando que acaba de agregar.
En la ventana Propiedades, establezca Name en AgregarTareaDependiente, Caption en Agregar tarea dependiente y Width en 100; a continuación, haga clic en Aplicar.
En el Selector de campos, haga clic en Nuevo.
En el cuadro de diálogo Nuevo campo, escriba CampoOculto en el campo Nombre y, a continuación, haga clic en Aceptar.
Arrastre el campo CampoOculto del Selector de campos al área de formulario.
En la ventana Propiedades, establezca la propiedad Visible en 0 - False y, a continuación, haga clic en Aplicar.
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.
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
En Visual Studio, cree un proyecto de complemento de Outlook con el nombre TaskAddIn.
En el cuadro de diálogo Nuevo proyecto, seleccione Crear directorio para la solución.
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
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.
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.
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.
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.
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.
En la página Proporcione texto descriptivo y seleccione sus preferencias de presentación, haga clic en Siguiente.
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
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.
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); }
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; } }
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; }
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); } } }
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
Presione F5 para ejecutar el proyecto.
Se inicia Outlook.
En Outlook, en la ficha Inicio , haga clic Nuevos elementos, y haga clic en Tarea.
En el formulario de tareas, escriba Tarea dependiente en el campo Asunto.
En la ficha Tarea de la cinta de opciones, en el grupo Acciones, haga clic en Guardar y cerrar.
En Outlook, en la ficha Inicio , haga clic Nuevos elementos, haga clic en Varios elementos, y haga clic en Elegir formulario.
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.
En el campo Asunto del formulario de tareas, escriba Tarea principal.
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.
Guarde el elemento Tarea principal y ciérrelo.
Vuelva a abrir el elemento Tarea dependiente en Outlook.
En el formulario Tarea dependiente, cambie el campo % completado a 50%.
En la pestaña Tarea de la Cinta de tareas dependientes, en el grupo Acciones, haga clic en Guardar y cerrar.
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:
Para obtener más información sobre cómo diseñar la apariencia de un área de formulario arrastrando controles administrados a un diseñador visual, vea Tutorial: Diseñar un área de formulario de Outlook.
Para obtener información sobre cómo personalizar la cinta de opciones de un elemento de Outlook, vea Personalizar una cinta de opciones para Outlook.
Para obtener más información sobre cómo agregar un panel de tareas personalizado a Outlook, vea Paneles de tareas personalizados.
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