Názorný postup: Aktualizace ovládacích prvků na pásu karet v době spuštění
Tento návod ukazuje, jak použít objektový model pásu po pásu karet je načten do aplikace Office aktualizovat ovládací prvky pásu karet.
Platí pro: Informace v tomto tématu se vztahují na projekty na úrovni dokumentu i na úrovni aplikace v následujících aplikacích: Excel 2013 a Excel 2010, InfoPath 2013 a InfoPath 2010, Outlook 2013 a Outlook 2010, PowerPoint 2013 a PowerPoint 2010, Project 2013 a Project 2010, Visio 2013 a Visio 2010, Word 2013 a Word 2010. Další informace naleznete v tématu Funkce aplikace Office a typ projektu.
Příklad čte data z ukázkové databáze Northwind naplnit pole se seznamem a nabídky v aplikace Microsoft Office Outlook.Položky, které vyberete v těchto ovládacích prvků automaticky naplnit pole jako na a Předmět e-mailové zprávy.
Tento návod ilustruje následující úkoly:
Vytvoření nové doplněk pro aplikaci Outlook projektu.
Návrh vlastní skupiny pásu karet.
Přidání vlastní skupinu na předdefinovanou kartu.
Aktualizace ovládacích prvků na pásu karet v době běhu.
[!POZNÁMKA]
Váš počítač může zobrazit jiné názvy nebo umístění pro některé prvky uživatelského rozhraní sady Visual Studio v následujících pokynech.Tyto prvky jsou určeny verzí aplikace Visual Studio a použitým nastavením.Další informace naleznete v tématu Nastavení aplikace Visual Studio.
Požadavky
Chcete-li dokončit tento návod, potřebujete následující komponenty:
-
Edice sady Visual Studio 2012, která zahrnuje nástroje Microsoft Office Developer Tools. Další informace naleznete v tématu [Konfigurace počítače vyvinout řešení Office](bb398242\(v=vs.110\).md).
- Aplikace Microsoft Outlook 2010 nebo Office 2013.
Vytvoření nové aplikace Outlook přidat do projektu
Nejprve vytvořte projekt doplněk pro aplikaci Outlook.
Chcete-li vytvořit nový doplněk pro aplikaci Outlook projekt
V Visual Studio, vytvořit Outlook 2010 nebo Outlook 2013 přidat projekt s názvem Ribbon_Update_At_Runtime.
V Nový projekt dialogovém vytvořit adresář pro řešení.
Uložte projekt do výchozího adresáře projektu.
Další informace naleznete v tématu Jak: vytvoření Office projekty v aplikaci Visual Studio.
Navržení vlastní skupina pásu karet
Pás karet pro tento příklad zobrazí, když uživatel vytvoří novou zprávu.Vytvořit vlastní skupiny pásu karet, první položka pásu karet přidat do projektu a pak navrhnout skupiny Návrhář pásu karet.Tento vlastní skupiny můžete generovat zpracování e-mailové zprávy zákazníkům vyžádáním názvy a pořadí historie z databáze.
Navrhnout vlastní skupiny.
V nabídce Projekt klikněte na příkaz Přidat novou položku.
V Přidat novou položku dialogovém pásu karet (vizuální návrhář).
Změňte název nové pásu karet na CustomerRibbona klepněte na tlačítko Přidat.
CustomerRibbon.cs nebo CustomerRibbon.vb soubor se otevře v Návrháři pásu karet a zobrazí výchozí kartu a skupiny.
Klepněte na Návrhář pásu karet, vyberte jej.
V Vlastnosti okno, klepněte na šipku rozevíracího seznamu vedle RibbonType vlastnost a pak klepněte na Microsoft.Outlook.Mail.Compose.
Díky pásu karet se zobrazí, pokud uživatel vytvoří novou zprávu v aplikaci Outlook.
Návrhář pásu karet klepněte na tlačítko skupina1 jej vyberte.
V Vlastnosti okno, nastavit štítek na nákupy zákazníka.
Z Ovládací prvky pásu karet Office kartě nástrojů, přetáhněte ComboBox na Nákupy zákazníka skupiny.
Klepněte na ComboBox1 jej vyberte.
V Vlastnosti okno, nastavit štítek zákazníkům.
Z Ovládací prvky pásu karet Office kartě nástrojů, přetáhněte nabídky na Nákupy zákazníka skupiny.
V Vlastnosti okno, nastavit štítek k zakoupení produktu.
Set Dynamic to true.
Umožňuje přidávat a odebírat ovládací prvky v nabídce v době spuštění po pásu karet je načten do aplikace sady Office.
Přidání skupiny vlastní integrovanou kartu
Vestavěné karta je karta, která je již na pásu karet aplikace Outlook, Průzkumník nebo inspektor.V tomto postupu integrovanou kartu přidat vlastní skupiny a zadejte umístění vlastní skupiny na kartě.
Přidat předdefinovanou kartu vlastní skupiny.
Klepněte TabAddins (předdefinovaná) kartu a vyberte jej.
V Vlastnosti okno, rozbalte ControlId vlastnost a poté nastavte OfficeId na TabNewMailMessage.
Přidá Nákupy zákazníka do skupiny zprávy kartu pásu karet, který se zobrazí nové e-mailové zprávy.
Klepněte Nákupy zákazníka skupinu, vyberte jej.
V Vlastnosti okno, rozbalte pozice vlastnost, klepněte na šipku rozevíracího seznamu vedle PositionType vlastnost a pak klepněte na BeforeOfficeId.
Nastavit OfficeId vlastnost GroupClipboard.
Tato pozice Nákupy zákazníka skupina před schránky skupinu zprávy kartu.
Vytváření zdroje dat
Použití Zdroje dat okno Přidat do projektu definovanou datovou sadu.
Vytvořit zdroj dat
Na dat nabídky, klepněte na Přidat nový zdroj dat.
Spustí Průvodce konfigurací zdroje dat.
Vyberte databázea klepněte na tlačítko Další.
Vyberte Dataseta klepněte na tlačítko Další.
Vyberte datové připojení k Microsoft SQL Server Compact 4.0 ukázková databáze Northwind nebo přidat nové připojení pomocí Nové připojení tlačítko.
Po vybrané připojení nebo vytvořili klepnutím na tlačítko Další.
Klepněte na Další uložit připojovací řetězec.
Na Zvolte vaše databázové objekty stránky, rozbalte položku tabulky.
Zaškrtněte políčko vedle každé z následujících tabulek:
Zákazníci
Podrobnosti objednávky
Objednávky
Produkty
Klepněte na tlačítko Dokončit.
Aktualizace skupiny vlastní ovládací prvky za běhu
Použití objektového modelu pásu provádět následující úkoly:
Přidat názvy zákazníků Zákazníci pole se seznamem.
Přidat ovládací prvky do nabídky a tlačítka Produkty zakoupené nabídce, která představují prodejní objednávky a výrobky prodávané.
Naplnění To, Subject, a Body pole nové zprávy elektronické pošty pomocí dat z Zákazníci pole se seznamem a Produkty zakoupené nabídky.
Aktualizovat vlastní skupinu ovládacích prvků pomocí objektového modelu pásu karet
V nabídce Projekt klepněte na příkaz Přidat odkaz.
V Přidat odkaz dialogové okno klepněte .NET kartě vyberte System.Data.Linq sestavení a poté klepněte na OK.
Toto sestavení obsahuje třídy pro použití Language-Integrated dotazy (LINQ).LINQ použije k naplnění ovládacích prvků do vlastní skupiny s daty z databáze Northwind.
V Průzkumníku, klepněte na CustomerRibbon.cs nebo CustomerRibbon.vb jej vyberte.
V menu Zobrazit klikněte na příkaz Kód.
Otevře soubor pásu kódu v editoru kódu.
Přidejte následující příkazy na začátek souboru kódu pásu karet.Tyto příkazy poskytují snadný přístup k LINQ obory názvů a obor názvů aplikaci Outlook primární sestavení interop (PIA).
Imports System.Data.Linq Imports System.Linq Imports System.Data.Linq.Mapping Imports System.Linq.Expressions Imports Outlook = Microsoft.Office.Interop.Outlook Imports Ribbon_Update_At_Runtime.Northwind40DataSetTableAdapters
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;
Přidejte následující kód do třídy CustomerRibbon.Tento kód deklaruje datové tabulky a tabulky adaptéry, které budete používat k ukládání informací od zákazníků, objednávek, podrobnosti objednávky a produktu tabulek databáze Northwind.
'Declare the Northwind data set. Dim nwDataSet As Northwind40DataSet = New Northwind40DataSet() 'Declare the data tables. Dim customerTable As Northwind40DataSet.CustomersDataTable Dim orderTable As Northwind40DataSet.OrdersDataTable Dim orderDetailsTable As Northwind40DataSet.Order_DetailsDataTable Dim productsTable As Northwind40DataSet.ProductsDataTable 'Declare the data table adapters for each table. Dim customersTableAdapter As CustomersTableAdapter = New CustomersTableAdapter() Dim ordersTableAdapter As OrdersTableAdapter = New OrdersTableAdapter() Dim detailsTableAdapter As Order_DetailsTableAdapter = New Order_DetailsTableAdapter() Dim productsTableAdapter As ProductsTableAdapter = New ProductsTableAdapter()
//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();
Přidejte následující blok kódu CustomerRibbon třídy.Tento kód přidá tři pomocné metody, které vytvořit ovládací prvky pásu karet za běhu.
Private Function CreateRibbonDropDownItem() As RibbonDropDownItem Return Me.Factory.CreateRibbonDropDownItem() End Function Private Function CreateRibbonMenu() As RibbonMenu Return Me.Factory.CreateRibbonMenu() End Function Private Function CreateRibbonButton() As RibbonButton Dim button As RibbonButton = Me.Factory.CreateRibbonButton() AddHandler (button.Click), AddressOf Button_Click Return button End Function
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; }
Nahradit CustomerRibbon_Load metoda obslužné rutiny události s následujícím kódem.Tento kód používá LINQ dotaz následující úlohy:
Naplnění Zákazníci pole se seznamem pomocí ID a název 20 zákazníci v databázi Northwind.
Volání PopulateSalesOrderInfo pomocnou metodu.Tato metoda aktualizace ProductsPurchased nabídka s čísla prodejní objednávky, která se vztahují k aktuálně vybranému odběrateli.
Private Sub CustomerRibbon_Load(ByVal sender As System.Object, _ ByVal e As Microsoft.Office.Tools.Ribbon.RibbonUIEventArgs) _ Handles MyBase.Load customerTable = nwDataSet.Customers customersTableAdapter.Fill(customerTable) Dim customerQuery = From customers In customerTable.AsEnumerable.Take(20) _ Select CustomerID = customers.Customer_ID, _ CustomerName = customers.Contact_Name ' Execute the query. For Each item In customerQuery Me.ComboBox1.Items.Add(CreateRibbonDropDownItem()) Me.ComboBox1.Items.Last().Label = item.CustomerID.ToString() _ + "|" + item.CustomerName Next item Me.ComboBox1.Text = Me.ComboBox1.Items.First().Label PopulateSalesOrderInfo() End Sub
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(); }
Přidejte následující kód do třídy CustomerRibbon.Tento kód používá LINQ dotazů provádět následující úkoly:
Přidá do podnabídky ProductsPurchased související nabídky pro každou prodejní objednávku pro vybraného odběratele.
Přidá tlačítka každé podnabídky produkty související s prodejní objednávkou.
Každé tlačítko přidá obslužné rutiny událostí.
Private Sub PopulateSalesOrderInfo() Dim tempArray As [String]() = comboBox1.Text.Split(New [Char]() {"|"c}) Menu1.Items.Clear() orderTable = nwDataSet.Orders orderDetailsTable = nwDataSet.Order_Details productsTable = nwDataSet.Products ordersTableAdapter.Fill(orderTable) detailsTableAdapter.Fill(orderDetailsTable) productsTableAdapter.Fill(productsTable) Dim orderQuery = From order In orderTable.AsEnumerable() _ Where order.Customer_ID.ToString() = tempArray(0) _ Select New With {.SalesOrderID = order.Order_ID} For Each orderItem In orderQuery Me.Menu1.Items.Add(CreateRibbonMenu()) Dim orderMenu As RibbonMenu = CType(Menu1.Items.Last(), RibbonMenu) orderMenu.Dynamic = True orderMenu.Label = orderItem.SalesOrderID.ToString() orderMenu.Tag = orderItem.SalesOrderID Dim productQuery = From orderDetail In orderDetailsTable.AsEnumerable(), _ product In productsTable.AsEnumerable() _ Where orderDetail.Product_ID = _ product.Product_ID _ And orderDetail.Order_ID = _ orderMenu.Tag _ Select productName = product.Product_Name For Each productItem In productQuery Dim button As RibbonButton = CreateRibbonButton() button.Label = productItem orderMenu.Items.Add(button) Next productItem Next orderItem End Sub
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); } } }
V Průzkumníku, poklepejte na soubor kódu pásu karet.
Otevře se Návrhář pásu karet.
V Návrháři pásu karet, poklepejte Zákazníci pole se seznamem.
Otevře soubor pásu kódu v editoru kódu a ComboBox1_TextChanged obslužné rutiny události se zobrazí.
Nahradit ComboBox1_TextChanged obslužnou rutinu následujícím kódem.Tento kód provede následující úlohy:
Volání PopulateSalesOrderInfo pomocnou metodu.Tato metoda aktualizace Produkty zakoupené nabídka s prodejní objednávky, které se vztahují k vybranému odběrateli.
Volání PopulateMailItem pomocnou metodu a předá v aktuální text, který je název vybraného odběratele.Tato metoda se naplní To, Subject, a Body pole nové zprávy elektronické pošty.
Private Sub ComboBox1_TextChanged(ByVal sender As System.Object, _ ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) _ Handles ComboBox1.TextChanged PopulateSalesOrderInfo() PopulateMailItem(ComboBox1.Text) End Sub
private void comboBox1_TextChanged(object sender, RibbonControlEventArgs e) { PopulateSalesOrderInfo(); PopulateMailItem(comboBox1.Text); }
Následující klepněte na tlačítko Přidat obslužnou rutinu události CustomerRibbon třídy.Tento kód přidá název vybrané produkty Body pole nové zprávy elektronické pošty.
Private Sub Button_Click(ByVal sender As System.Object, _ ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) Dim application As Outlook.Application = Globals.ThisAddIn.Application Dim inspector As Outlook.Inspector = application.ActiveInspector() Dim myMailItem As Outlook.MailItem = CType(inspector.CurrentItem, _ Outlook.MailItem) Dim myButton As RibbonButton = CType(sender, RibbonButton) myMailItem.Subject = "Following up on your order" myMailItem.Body = myMailItem.Body + ControlChars.Lf + "* " _ + myButton.Label End Sub
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; }
Přidejte následující kód do třídy CustomerRibbon.Tento kód provede následující úlohy:
Vyplní To řádku nové e-mailových zpráv pomocí e-mailovou adresu aktuálně vybraného odběratele.
Přidá text Subject a Body pole nové zprávy elektronické pošty.
Private Sub PopulateMailItem(ByVal addressToLine As String) Dim application As Outlook.Application = Globals.ThisAddIn.Application Dim inspector As Outlook.Inspector = application.ActiveInspector() Dim myMailItem As Outlook.MailItem = _ CType(inspector.CurrentItem, Outlook.MailItem) myMailItem.To = "" Dim tempArray As [String]() = addressToLine.Split(New [Char]() {"|"c}) myMailItem.To = tempArray(1) + "@example.com" myMailItem.Subject = "Following up on your order" myMailItem.Body = "Hello " + tempArray(1) + "," _ + ControlChars.Lf + "We would like to get your feedback" + _ "on the following products that you recently ordered: " End Sub
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: "; }
Testování ovládacích prvků ve vlastní skupině
Při otevření nového formuláře pošty v aplikaci Outlook vlastní skupinu s názvem Nákupy zákazníka se zobrazí na zprávy kartu pásu karet.
Vytvoření zákazníka zpracování e-mailové zprávy, vyberte zákazníka a potom vyberte produkty zakoupené zákazníka.Ovládací prvky Nákupy zákazníka skupiny jsou aktualizovány v době běhu pomocí dat z databáze Northwind.
K testování ovládacích prvků ve vlastní skupině
Stisknutím klávesy F5 spustit projektu.
Spuštění aplikace Outlook.
V aplikaci Outlook na soubor příkaz Novýa klepněte na tlačítko Zprávy.
Dojde k následujícím akcím:
Zobrazí se okno Inspektor nové zprávy pošty.
Na zpráva kartu na pásu karet Nákupy zákazníka skupiny se zobrazí před schránky skupiny.
Zákazníci je aktualizován seznamem ve skupině s názvy Zákazníci v databázi Northwind.
Na zpráva kartu pásu karet, v Nákupy zákazníka skupině, vyberte zákazníka z Zákazníci pole se seznamem.
Dojde k následujícím akcím:
Produkty zakoupené nabídky aktualizována na každé prodejní objednávky vybraného odběratele.
Podnabídka každé prodejní objednávky je aktualizována na produkty zakoupené v uvedeném pořadí.
E-mailovou adresu vybraného odběratele je do na jsou naplněny řádek poštovní zprávy a Předmět poštovní zprávy s textem.
Klepněte Nákup produktů nabídce přejděte na všechny prodejní objednávky a klepněte na produkt z prodejní objednávky.
Název produktu je přidán do těla e-mailové zprávy.
Další kroky
Další informace o přizpůsobení uživatelského rozhraní sady Office z těchto témat:
Přidejte libovolné úrovni dokumentu vlastní uživatelské rozhraní založené na kontextu.Další informace naleznete v tématu Přehled podokno akcí.
Rozšířit standardní nebo vlastní formulář aplikace Microsoft Office Outlook.Další informace naleznete v tématu Názorný postup: Navrhování oblastí formuláře aplikace Outlook.
Aplikace Outlook přidáte vlastní podokno úloh.Další informace naleznete v tématu Vlastní podokna úloh.
Viz také
Úkoly
Jak: Začínáme přizpůsobení pásu karet
Názorný postup: Vytváření pomocí Návrháře pásu kartu Vlastní
Jak: Změna umístění kartu na pásu karet
Jak: vlastní integrovanou kartu
Jak: přidání ovládacích prvků do Backstage zobrazení
Jak: z pásu karet Návrhář pásu XML exportovat pásu karet
Jak: v uživatelské rozhraní chyby
Koncepty
Přístup k pásu karet v době spuštění
Přehled modelu objektu pásu karet
Přizpůsobení pásu karet pro aplikaci Outlook