Sunteți pe pagina 1din 8

Tutorial: Actualizar los controles de una

cinta en tiempo de ejecución


01/02/2017Tiempo de lectura: 11 minutos        
En este artículo
Requisitos previos
Cree un nuevo proyecto de complemento VSTO de Outlook
Diseñar un grupo personalizado de la cinta de opciones
Agregar el grupo personalizado a una pestaña integrada
Crear el origen de datos
Actualizar los controles del grupo personalizado en tiempo de ejecución
Probar los controles del grupo personalizado
Pasos siguientes
Vea también

Este tutorial muestra cómo utilizar el modelo de objetos de la cinta de opciones para actualizar los
controles de una cinta después de carga la cinta de opciones en la aplicación de Office.

Se aplica a: La información de este tema se aplica al documento-proyectos y agregar de VSTO de


nivel-en proyectos para las aplicaciones siguientes: Excel; InfoPath 2013 e InfoPath 2010; Outlook;
PowerPoint; Proyecto; Visio; Word. Para obtener más información, consulte características disponibles
por tipo de aplicación y el proyecto de Office.

En el ejemplo, se extraen los datos de la base de datos de ejemplo Northwind para rellenar un cuadro
combinado y un menú en Microsoft Office Outlook. Los elementos que se seleccionan en estos
controles automáticamente rellenan los campos como a y asunto en un mensaje de correo
electrónico.

En este tutorial se muestran las tareas siguientes:

Cree un nuevo proyecto de complemento VSTO de Outlook.

Diseñar un grupo personalizado de la cinta de opciones.

Agregue el grupo personalizado a una pestaña integrada.

Actualizar los controles en la cinta de opciones en tiempo de ejecución.

 Nota

Es posible que el 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 se tenga y la configuración que se utilice determinan estos elementos. Para más
información, vea Personalizar el IDE de Visual Studio.

Requisitos previos
Necesita los componentes siguientes para completar este tutorial:

Una edición de Visual Studio que incluye las herramientas para desarrolladores de Microsoft
Office. Para obtener más información, consulte configurar un equipo para desarrollar soluciones
de Office.

Microsoft Outlook
Cree un nuevo proyecto de complemento VSTO de
Outlook
En primer lugar, cree un proyecto de complemento de VSTO de Outlook.

Para crear un proyecto de complemento de VSTO de Outlook

1. En Programa para la mejora, cree un proyecto de complemento VSTO de Outlook con el


nombre Ribbon_Update_At_Runtime.

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

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

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

Diseñar un grupo personalizado de la cinta de opciones


La cinta de opciones para este ejemplo aparecerá cuando un usuario cree un nuevo mensaje de correo
electrónico. Para crear un grupo personalizado de la cinta de opciones, primero agregue un elemento
de la cinta de opciones al proyecto y, a continuación, diseñe el grupo en el Diseñador de cinta. Este
grupo personalizado ayudará a generar mensajes de correo electrónico de seguimiento a los clientes
extrayendo los nombres e historiales de pedidos de una base de datos.

Para diseñar un grupo personalizado

1. En el menú Proyecto , haga clic en Agregar nuevo elemento.

2. En el cuadro de diálogo Agregar nuevo elemento , seleccione Cinta (diseñador visual).

3. Cambiar el nombre de la nueva cinta de opciones para CustomerRibbony, a continuación, haga


clic en agregar.

El CustomerRibbon.cs o CustomerRibbon.vb archivo se abre en el Diseñador de cinta de opciones


y muestra una ficha predeterminada y un grupo.

4. Haga clic en el Diseñador de la cinta de opciones para seleccionarlo.

5. En el propiedades ventana, haga clic en la flecha desplegable situada junto a


la RibbonType propiedad y, a continuación, haga clic en Microsoft.Outlook.Mail.Compose.

Esto permite que la cinta de opciones que aparecen cuando el usuario redacte un nuevo mensaje
de correo electrónico en Outlook.

6. En el Diseñador de cinta de opciones, haga clic en Group1 para seleccionarlo.

7. En el propiedades ventana, establezca etiqueta a compras del cliente.

8. Desde el controles de la cinta de Office pestaña de la cuadro de herramientas, arrastre


un ComboBox hasta la compras del cliente grupo.

9. Haga clic en ComboBox1 para seleccionarlo.

10. En el propiedades ventana, establezca etiqueta a clientes.

11. Desde el controles de la cinta de Office pestaña de la cuadro de herramientas, arrastre


un menú hasta la compras del cliente grupo.

12. En el propiedades ventana, establezca etiqueta a producto comprado.

13. Establecer dinámica a true.
Esto le permite agregar y quitar controles del menú en tiempo de ejecución después de carga la
cinta de opciones en la aplicación de Office.

Agregar el grupo personalizado a una pestaña integrada


Una pestaña integrada es una ficha que ya está en la cinta de opciones de un Inspector o explorador
de Outlook. En este procedimiento agregará el grupo personalizado a una pestaña integrada y
especificará la posición del grupo personalizado en la pestaña.

Para agregar el grupo personalizado a una pestaña integrada

1. Haga clic en el TabAddins (integrado) tab para seleccionarla.

2. En el propiedades ventana, expanda el ControlId propiedad y, después,


establezca OfficeId a TabNewMailMessage.

Esto agrega el compras del cliente grupo la mensajes pestaña de la cinta de opciones que


aparece en un mensaje de correo.

3. Haga clic en el compras del cliente grupo para seleccionarlo.

4. En el propiedades ventana, expanda el posición propiedad, haga clic en la flecha desplegable


situada junto a la PositionType propiedad y, a continuación, haga clic enBeforeOfficeId.

5. Establecer el OfficeId propiedad GroupClipboard.

Esto coloca el compras del cliente grupo antes de la Portapapeles grupo de la mensajes ficha.

Crear el origen de datos


Use la ventana Orígenes de datos para agregar un conjunto de datos con tipo al proyecto.

Para crear el origen de datos

1. En el menú Datos , haga clic en Agregar nuevo elemento.

Esto inicia el Asistente para configuración de origen de datos.

2. Seleccione base de datosy, a continuación, haga clic en siguiente.

3. Seleccione Datasety, a continuación, haga clic en siguiente.

4. Seleccione una conexión de datos para la base de datos de Microsoft SQL Server Compact 4.0 de
ejemplo Northwind, o agregar una nueva conexión mediante el nueva conexión botón.

5. Después de haberse seleccionada o creada una conexión, haga clic en siguiente.

6. Haga clic en siguiente para guardar la cadena de conexión.

7. En el elija los objetos de base de datos , expanda tablas.

8. Active la casilla situada al lado de cada una de las siguientes tablas:

a. Clientes

b. Detalles del pedido

c. Pedidos

d. Productos

9. Haga clic en Finalizar.


Actualizar los controles del grupo personalizado en
tiempo de ejecución
Use el modelo de objetos de la cinta de opciones para llevar a cabo las siguientes tareas:

Agregar nombres de los clientes a la clientes cuadro combinado.

Agregar controles de menú y el botón a la productos comprados menú que representen los


pedidos y productos vendidos.

Rellenar el para, asunto y cuerpo de los campos de nuevos mensajes de correo mediante el uso
de datos de la clientes cuadro combinado y productos compradosmenú.

Para actualizar los controles del grupo personalizado mediante el modelo de


objetos de la cinta de opciones

1. En el menú Proyecto, haga clic en Agregar referencia.

2. En el Agregar referencia cuadro de diálogo, haga clic en el .NET ficha, seleccione


el System.Data.Linq ensamblado y, a continuación, haga clic en Aceptar.

Este ensamblado contiene las clases para usar Language-Integrated Queries (LINQ).Va a usar
LINQ para rellenar los controles del grupo personalizado con datos de la base de datos
Northwind.

3. En el Explorador de soluciones, haga clic en CustomerRibbon.cs o CustomerRibbon.vb para


seleccionarlo.

4. En el vista menú, haga clic en código.

Se abre el archivo de código de la cinta de opciones en el editor de código.

5. Agregue las siguientes instrucciones a la parte superior del archivo de código de la cinta. Estas
instrucciones proporcionan acceso fácil a los espacios de nombres LINQ y al espacio de nombres
del ensamblado de interoperabilidad primario (PIA) de Outlook.

C# Copiar

using System.Data.Linq;
using System.Data.Linq.Mapping;
using System.Linq.Expressions;
using Outlook = Microsoft.Office.Interop.Outlook;
using System.Data;
using System.IO;
using Ribbon_Update_At_Runtime.Northwind40DataSetTableAdapters;

6. Agregue el código siguiente dentro de la  CustomerRibbon  clase. Este código declara los
adaptadores de tabla y tabla de datos que usará para almacenar la información de las tablas de
clientes, pedidos, detalles de pedidos y productos de la base de datos Northwind.

C# Copiar

//Declare the Northwind dataset.


Northwind40DataSet nwDataSet = new Northwind40DataSet();

//Declare the data tables.

Northwind40DataSet.CustomersDataTable customerTable;
Northwind40DataSet.OrdersDataTable orderTable;
Northwind40DataSet.Order_DetailsDataTable orderDetailsTable;
Northwind40DataSet.ProductsDataTable productsTable;
//Declare the data table adapters for each table.

CustomersTableAdapter customerTableAdapter = new CustomersTableAdapter();


OrdersTableAdapter ordersTableAdapter = new OrdersTableAdapter();
Order_DetailsTableAdapter detailsTableAdapter = new Order_DetailsTableAdapter();
ProductsTableAdapter productsTableAdapter = new ProductsTableAdapter();

7. Agregue el siguiente bloque de código a la clase  CustomerRibbon . Este código agrega tres
métodos auxiliares que crean los controles de la cinta de opciones en tiempo de ejecución.

C# Copiar

private RibbonDropDownItem CreateRibbonDropDownItem()


{
return this.Factory.CreateRibbonDropDownItem();
}
private RibbonMenu CreateRibbonMenu()
{
return this.Factory.CreateRibbonMenu();
}
private RibbonButton CreateRibbonButton()
{
RibbonButton button = this.Factory.CreateRibbonButton();
button.Click += new RibbonControlEventHandler(button_Click);
return button;
}

8. Reemplace el método del controlador de eventos  CustomerRibbon_Load  por el siguiente


código. Este código usa una consulta LINQ para efectuar las siguientes tareas:

Rellenar el clientes cuadro combinado mediante el identificador y nombre de 20 clientes en


la base de datos Northwind.

Llama al método del asistente  PopulateSalesOrderInfo . Este método actualiza


el Productoscomprados menú con los números de pedido de ventas que pertenecen al
cliente actualmente seleccionado.

C# Copiar

private void CustomerRibbon_Load(object sender, RibbonUIEventArgs e)


{
customerTable = nwDataSet.Customers;
customerTableAdapter.Fill(customerTable);

var customerQuery = from customers in customerTable.AsEnumerable().Take(20)


select new
{
CustomerID = customers.Field<string>("Customer ID"),
CustomerName = customers.Field<string>("Contact
Name")
};

// Execute the query.


foreach (var item in customerQuery)
{
this.comboBox1.Items.Add(CreateRibbonDropDownItem());
this.comboBox1.Items.Last().Label =
item.CustomerName + "|" + item.CustomerID.ToString();
}
this.comboBox1.Text = this.comboBox1.Items.First().Label;
PopulateSalesOrderInfo();
}
9. Agregue el código siguiente a la clase  CustomerRibbon  . Este código usa consultas LINQ para
efectuar las siguientes tareas:

Agregar un submenú a la Productoscomprados menú para cada pedido de ventas


relacionada con el cliente seleccionado.

Agregar botones a cada submenú para los productos relacionados con el pedido.

Agregar controladores de eventos a cada botón.

C# Copiar

private void PopulateSalesOrderInfo()


{
String[] tempArray = comboBox1.Text.Split(new Char[] { '|' });
menu1.Items.Clear();

orderTable = nwDataSet.Orders;
orderDetailsTable = nwDataSet.Order_Details;
productsTable = nwDataSet.Products;

ordersTableAdapter.Fill(orderTable);
detailsTableAdapter.Fill(orderDetailsTable);
productsTableAdapter.Fill(productsTable);

var orderQuery = from orders in orderTable.AsEnumerable()


where orders.Field<string>("Customer ID") == tempArray[1]
select new { OrderID = orders.Field<int>("Order ID") };

foreach (var orderItem in orderQuery)


{
menu1.Items.Add(CreateRibbonMenu());

RibbonMenu orderMenu = (RibbonMenu)menu1.Items.Last();


orderMenu.Dynamic = true;
orderMenu.Label = orderItem.OrderID.ToString();
orderMenu.Tag = orderItem.OrderID;

var productQuery = from orderDetail in orderDetailsTable.AsEnumerable()


join product in productsTable.AsEnumerable() on
orderDetail.Field<int>("Product ID")
equals product.Field<int>("Product ID")
where orderDetail.Field<int>("Order ID") ==
orderItem.OrderID
select new { ProductName = product.Field<string>
("Product Name") };

foreach (var productItem in productQuery)


{
RibbonButton button = CreateRibbonButton();
button.Label = productItem.ProductName;
orderMenu.Items.Add(button);
}
}
}

10. En el Explorador de soluciones, haga doble clic en el archivo de código de la cinta de opciones.

Se abre el Diseñador de la cinta de opciones.

11. En el Diseñador de cinta de opciones, haga doble clic en el clientes cuadro combinado.

El archivo de código de la cinta de opciones se abre en el editor de código y aparece el


controlador de eventos  ComboBox1_TextChanged .
12. Reemplace el controlador de eventos  ComboBox1_TextChanged  por el siguiente código:Este código
realiza las tareas siguientes:

Llama al método del asistente  PopulateSalesOrderInfo . Este método actualiza el productos


comprados menú con los pedidos relacionados con el cliente seleccionado.

Llama al método del asistente  PopulateMailItem  y pasa el texto actual, que es el nombre
del cliente seleccionado. Este método rellena el para, asunto y cuerpo de los campos de
nuevos mensajes de correo.

C# Copiar

private void comboBox1_TextChanged(object sender,


RibbonControlEventArgs e)
{
PopulateSalesOrderInfo();
PopulateMailItem(comboBox1.Text);
}

13. Agregue el siguiente controlador de eventos  Click  a la clase  CustomerRibbon  . Este código
agrega el nombre de los productos seleccionados al campo de cuerpo de nuevos mensajes de
correo.

C# Copiar

void button_Click(object sender, RibbonControlEventArgs e)


{
Outlook.Application application = Globals.ThisAddIn.Application;
Outlook.Inspector inspector = application.ActiveInspector();
Outlook.MailItem myMailItem = (Outlook.MailItem)inspector.CurrentItem;
RibbonButton myCheckBox = (RibbonButton)sender;
myMailItem.Subject = "Following up on your order";
myMailItem.Body = myMailItem.Body + "\n" + "* " + myCheckBox.Label;
}

14. Agregue el código siguiente a la clase  CustomerRibbon  . Este código realiza las tareas siguientes:

Rellena la línea para de nuevos mensajes de correo mediante el uso de la dirección de


correo electrónico del cliente actualmente seleccionado.

Agrega texto a los campos Asunto y cuerpo de nuevos mensajes de correo.

C# Copiar

private void PopulateMailItem(string addressToLine)


{
Outlook.Application application = Globals.ThisAddIn.Application;
Outlook.Inspector inspector = application.ActiveInspector();
Outlook.MailItem myMailItem = (Outlook.MailItem)inspector.CurrentItem;

myMailItem.To = "";
String[] tempArray = addressToLine.Split(new Char[] { '|' });
myMailItem.To = tempArray[0] + "@example.com";
myMailItem.Subject = "Following up on your order";
myMailItem.Body = "Hello " + tempArray[0] + "," +
"\n" + "We would like to get your feedback on the " +
"following products that you recently ordered: ";
}

Probar los controles del grupo personalizado


Cuando abre un nuevo formulario de correo electrónico en Outlook, un grupo personalizado
denominado compras del cliente aparece en el mensajes pestaña de la cinta de opciones.

Para crear un mensaje de correo electrónico de seguimiento de cliente, seleccione a un cliente y, a


continuación, seleccione los productos comprados por el cliente. Los controles en el compras del
cliente grupo se actualizan en tiempo de ejecución con los datos de la base de datos Northwind.

Para probar los controles en el grupo personalizado

1. Presione F5 para ejecutar el proyecto.

Se inicia Outlook.

2. En Outlook, en el archivo menú, elija Newy, a continuación, haga clic en mensaje de correo


electrónico.

Se producen las siguientes acciones:

Aparece una nueva ventana del inspector de mensajes de correo.

En el mensaje pestaña de la cinta de opciones, el compras del cliente grupo aparece antes


de la Portapapeles grupo.

El clientes cuadro combinado en el grupo se actualiza con los nombres de los clientes en la


base de datos Northwind.

3. En el mensaje pestaña de la cinta de opciones, en el compras del cliente grupo, seleccione un


cliente en el clientes cuadro combinado.

Se producen las siguientes acciones:

El productos comprados menú se actualiza para mostrar cada pedido de ventas para el


cliente seleccionado.

Cada submenú del pedido se actualiza para mostrar los productos comprados en ese
pedido.

Dirección de correo electrónico del cliente seleccionado se agrega a la a línea del mensaje
de correo electrónico y el asunto y cuerpo del mensaje de correo se rellenan con texto.

4. Haga clic en el Products Purchases menú, elija cualquier pedido de ventas y, a continuación,


haga clic en un producto del pedido de ventas.

El nombre del producto se agrega al cuerpo del mensaje de correo.