Wskazówki: aktualizowanie formantów na wstążce w czasie wykonywania
W tym instruktażu przedstawiono sposób użycia modelu wstążki do aktualizacji formantów na Wstążce po Wstążka jest ładowany do aplikacji pakietu Office.
Zastosowanie: Informacje przedstawione w tym temacie mają zastosowanie do projektów na poziomie dokumentu i aplikacji dla następujących aplikacji: Excel 2013 i Excel 2010; InfoPath 2013 i InfoPath 2010; Outlook 2013 i Outlook 2010; PowerPoint 2013 i PowerPoint 2010; Project 2013 i Project 2010; Visio 2013 i Visio 2010; Word 2013 i Word 2010. Aby uzyskać więcej informacji, zobacz Funkcje dostępne w aplikacjach pakietu Office i typ projektu.
Przykład ściąga dane z przykładowej bazy danych Northwind do wypełniania pola kombi i menu w Microsoft Office Outlook.Elementy, które wybrać w tych formantach automatycznie wypełnić pola takie jak do i temat w wiadomości e-mail.
W tym instruktażu przedstawiono następujące zadania:
Tworzenie nowego dodatek programu Outlook projektu.
Projektowanie niestandardowych grupa wstążki.
Dodawanie grupy niestandardowej do karty wbudowanej.
Aktualizacja formantów na Wstążce w czasie wykonywania.
[!UWAGA]
Komputer może pokazać różne nazwy lub lokalizacje dla niektórych użytkowników programu Visual Studio elementów interfejsu w poniższych instrukcji.Wydanie programu Visual Studio, że masz i ustawienia, które możesz używać określenia tych elementów.Aby uzyskać więcej informacji, zobacz Dostosowywanie ustawień środowiska deweloperskiego w Visual Studio.
Wymagania wstępne
Potrzebne do przeprowadzenia tego instruktażu następujące składniki:
Edycja programu Visual Studio 2013, która oferuje narzędzia deweloperskie pakietu Microsoft Office. Aby uzyskać więcej informacji, zobacz Konfigurowanie komputera do opracowywania rozwiązań pakietu Office.
Program Microsoft Outlook 2010 lub Office 2013.
Tworzenie nowego programu Outlook dodatek projektu
Najpierw należy utworzyć dodatek programu Outlook projektu.
Aby utworzyć nowy dodatek programu Outlook projekt
W Visual Studio, tworzenie Outlook 2010 lub Outlook 2013 -w projekcie o nazwie Ribbon_Update_At_Runtime.
W Nowy projekt okno dialogowe, wybierz Utwórz katalog rozwiązania.
Zapisz projekt do domyślnego katalogu projektu.
Aby uzyskać więcej informacji, zobacz Porady: tworzenie projektów Office w Visual Studio.
Projektowanie grupy niestandardowe wstążki
Wstążki, na przykład pojawi się, gdy użytkownik redaguje nową wiadomość e-mail.Aby utworzyć grupę niestandardową na Wstążce, najpierw Dodaj element wstążki do projektu, a następnie zaprojektować grupy projektanta wstążki.Tej grupy niestandardowej pomoże generowanie wiadomości e-mail uzupełniającego klientom poprzez pociągnięcie nazwy i zamówić historie z bazy danych.
Aby zaprojektować grupy niestandardowej
Na Projekt menu, kliknij przycisk Dodaj nowy element.
W Dodaj nowy element okno dialogowe, wybierz wstążki (Visual Designer).
Zmień nazwę nowej taśmy do CustomerRibbon, a następnie kliknij przycisk Dodaj.
CustomerRibbon.cs lub CustomerRibbon.vb plik zostanie otwarty w Projektancie Wstążki i wyświetla domyślną kartę i grupy.
Kliknij projektanta wstążki, aby go zaznaczyć.
W Właściwości okno, kliknij strzałkę rozwijaną obok RibbonType właściwość, a następnie kliknij przycisk Microsoft.Outlook.Mail.Compose.
Dzięki temu wstążki do stawienia się, gdy użytkownik redaguje nową wiadomość e-mail w programie Outlook.
W Projektancie Wstążki kliknij grupa1 , aby go zaznaczyć.
W Właściwości okno, ustawić etykiety zakupy klientów.
Z Formanty wstążki Office karta Przybornik, przeciągnij ComboBox na Zakupy klientów grupy.
Kliknij przycisk ComboBox1 , aby go zaznaczyć.
W Właściwości okno, ustawić etykiety do klientów.
Z Formanty wstążki Office karta Przybornik, przeciągnij Menu na Zakupy klientów grupy.
W Właściwości okno, ustawić etykiety do zakupionych produktów.
Set Dynamic to true.
Dzięki temu można dodawać i usuwać formanty, w menu w czasie wykonywania po Wstążka jest ładowany do aplikacji pakietu Office.
Dodawanie grupy niestandardowe do karty wbudowanej
Wbudowane karty jest karta, która jest już na wstążce programu Outlook, Eksploratora lub Inspektora.W tej procedurze będzie dodać grupy niestandardowej do wbudowanej karty, a następnie określ położenie grupy niestandardowej na karcie.
Aby dodać grupy niestandardowej do karty wbudowanej
Kliknij przycisk TabAddins (wbudowany) , aby go zaznaczyć.
W Właściwości okna, rozwiń węzeł Właściwości ControlId właściwość, a następnie ustawić OfficeId do TabNewMailMessage.
Spowoduje to dodanie Zakupy klientów do grupy wiadomości karty wstążki, który pojawia się w nowej wiadomości poczty.
Kliknij przycisk Zakupy klientów grupy, aby go zaznaczyć.
W Właściwości okna, rozwiń węzeł pozycji właściwość, kliknij strzałkę rozwijaną obok PositionType właściwość, a następnie kliknij przycisk BeforeOfficeId.
Zestaw OfficeId właściwość do GroupClipboard.
Tej pozycji Zakupy klientów grupy przed Schowka grupy wiadomości kartę.
Tworzenie źródła danych
Użycie Źródła danych okno umożliwiające dodanie zestawu danych wpisywanych do projektu.
Aby utworzyć źródło danych
Na danych menu, kliknij przycisk Dodać nowe źródło danych.
Uruchomiony zostanie program Kreatora konfiguracji źródła danych.
Wybierz bazy danych, a następnie kliknij przycisk Dalej.
Wybierz zestawu danych, a następnie kliknij przycisk Dalej.
Wybierz połączenie danych z Microsoft SQL Server Compact 4.0 bazie danych Northwind, lub dodać nowe połączenie za pomocą Nowego połączenia przycisk.
Po zostało wybrane lub utworzone połączenie, kliknij przycisk Dalej.
Kliknij przycisk Dalej zapisać ciąg połączenia.
Na Wybierz obiekty bazy danych użytkownika strony, rozwiń węzeł tabele.
Zaznacz pole wyboru obok każdego z następujących tabel:
Klienci
Szczegóły zamówienia
Zamówienia
Produkty
Kliknij przycisk wykończenie.
Aktualizacja formantów w grupy niestandardowe, w czasie wykonywania
Modelu Wstążka umożliwia wykonywanie następujących zadań:
Dodaj nazwy klienta do Klienci polu kombi.
Dodawanie formantów menu i przycisku do Produkty zakupione menu, które reprezentują zamówień sprzedaży i produktów sprzedawanych.
Wypełnić To, Subject, i Body pól w nowej wiadomości e-mail przy użyciu danych z Klienci pole kombi i Produkty zakupione menu.
Do aktualizacji formantów w grupie niestandardowej przy użyciu modelu obiektowego wstążki
Na Projekt menu, kliknij przycisk Dodaj odwołanie.
W Dodaj odwołanie okno dialogowe, kliknij przycisk .NET kartę, a następnie kliknij polecenie Wybierz System.Data.Linq zestawu, a następnie kliknij przycisk OK.
Ten zestaw zawiera klasy za pomocą kwerendy Language-Integrated (LINQ).LINQ będzie używany do wypełniania formantów w grupie niestandardowej z danymi z bazy danych Northwind.
W Solution Explorer, kliknij CustomerRibbon.cs lub CustomerRibbon.vb , aby go zaznaczyć.
Na Widok menu, kliknij przycisk Kod.
Plik kod wstążki zostanie otwarty w edytorze kodu.
Dodaj następujące instrukcje do początku pliku kodu wstążki.Instrukcje te zapewniają łatwy dostęp do obszarów nazw LINQ i obszaru nazw Outlook podstawowy zestaw międzyoperacyjny (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;
Dodaj następujący kod wewnątrz klasy CustomerRibbon.Ten kod deklaruje tabeli danych i tabeli kart, które będą używane do przechowywania informacji od klienta, zamówienia, szczegóły zamówienia i tabele produktów w bazie danych 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();
Dodaj następujący blok kodu do CustomerRibbon klasy.Ten kod dodaje trzy metody pomocnika, które tworzą formanty wstążki w czasie wykonywania.
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; }
Zamień CustomerRibbon_Load metoda obsługi zdarzenia z następującego kodu.Ten kod używa programu LINQ do wykonywania następujących zadań:
Wypełnić Klienci polu kombi przy użyciu identyfikator i nazwę 20 klientów w bazie danych Northwind.
Wywołania PopulateSalesOrderInfo metoda pomocnika.Ta metoda aktualizuje ProductsPurchased menu numer zamówienia sprzedaży, które odnoszą się do aktualnie wybranego odbiorcy.
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(); }
Dodaj następujący kod do CustomerRibbon klasy.Ten kod używa kwerend LINQ do wykonywania następujących zadań:
Dodaje podmenu, aby ProductsPurchased związanych z menu dla każdego zamówienia sprzedaży wybranego odbiorcy.
Dodaje przyciski do każdego podmenu dla produktów związanych z zamówieniem sprzedaży.
Dodaje Obsługa zdarzeń do każdego przycisku.
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); } } }
W Solution Explorer, kliknij dwukrotnie plik kodu wstążki.
Zostanie otwarty projektant wstążki.
W Projektancie wstążki, kliknij dwukrotnie Klienci polu kombi.
Plik kod wstążki zostanie otwarty w edytorze kodu i ComboBox1_TextChanged programu obsługi zdarzeń jest wyświetlany.
Zamień ComboBox1_TextChanged obsługi zdarzeń z następującego kodu.Ten kod wykonuje następujące zadania:
Wywołania PopulateSalesOrderInfo metoda pomocnika.Ta metoda aktualizuje Produkty zakupione menu z zamówień sprzedaży, które odnoszą się do danego odbiorcy.
Wywołania PopulateMailItem metoda pomocnika i przechodzi w bieżący tekst, który jest nazwa wybranego odbiorcy.Ta metoda wypełnia To, Subject, i Body pól w nowej wiadomości e-mail.
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); }
Dodaj następujące kliknij obsługi zdarzeń do CustomerRibbon klasy.Ten kod dodaje nazwy wybranych produktów do Body pole nowe wiadomości e-mail.
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; }
Dodaj następujący kod do CustomerRibbon klasy.Ten kod wykonuje następujące zadania:
Wypełnia To linii nowe wiadomości e-mail przy użyciu adresu e-mail aktualnie wybranego odbiorcy.
Dodaje tekst do Subject i Body pól w nowej wiadomości e-mail.
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: "; }
Testowanie formantów w grupy niestandardowe
Po otwarciu nowego formularza poczty w programie Outlook, grupę niestandardową o nazwie Zakupy klientów pojawia się na wiadomości karty wstążki.
Aby utworzyć wiadomość e-mail uzupełniającego klienta, wybierz klienta, a następnie wybierz produktów zakupionych przez klienta.Formanty w Zakupy klientów grupy są aktualizowane w czasie wykonywania za pomocą danych z bazy danych Northwind.
Aby przetestować formanty w grupie niestandardowej
Naciśnij klawisz F5, aby uruchomić projekt.
Uruchamia program Outlook.
W programie Outlook na pliku menu, wskaż Nowa, a następnie kliknij przycisk Wiadomość pocztowa.
Wykonywane są następujące akcje:
Zostanie wyświetlone okno Inspektora nowej wiadomości poczty.
Na wiadomość karty wstążki, Zakupy klientów grupa pojawia się przed Schowka grupy.
Klienci polu kombi w grupie jest aktualizowana z nazwami klientów w bazie danych Northwind.
Na wiadomość karty wstążki, w Zakupy klientów grupy, wybierz odbiorcę z Klienci polu kombi.
Wykonywane są następujące akcje:
Produkty zakupione menu jest aktualizowana w celu wyświetlenia każdego zamówienia sprzedaży dla wybranego odbiorcy.
Podmenu każdego zamówienia sprzedaży jest aktualizowana w celu wyświetlenia produkty zakupione w tej kolejności.
Adres e-mail wybranego odbiorcy jest dodawany do do linii wiadomości pocztowej i temat i treść wiadomości poczty są wypełniane tekstem.
Kliknij przycisk Zakupów produktów menu, wskaż polecenie wszystkie zamówienia sprzedaży, a następnie kliknij produkt z zamówienia sprzedaży.
Nazwa produktu jest dodawane do treści wiadomości.
Następne kroki
Można uzyskać więcej informacji na temat dostosowywania interfejsu użytkownika pakietu Office z tych tematów:
Dodać interfejsu użytkownika w kontekście Dostosowywanie poziomie dokumentu.Aby uzyskać więcej informacji, zobacz Okienko akcji ― Omówienie.
Rozszerzanie standardowy lub niestandardowy formularz Microsoft Office Outlook.Aby uzyskać więcej informacji, zobacz Wskazówki: projektowanie regionów formularzy programu Outlook.
Dodawanie niestandardowych okienko zadań do programu Outlook.Aby uzyskać więcej informacji, zobacz Niestandardowe okienka zadań.
Zobacz też
Zadania
Porady: wprowadzenie do dostosowywania wstążki
Wskazówki: tworzenie kart niestandardowych za pomocą Projektanta wstążki
Porady: zmiana położenia zakładki na wstążce
Porady: dostosowywanie wbudowanej karty
Porady: dodawanie formantów do widoku zakulisowego
Porady: eksportowanie wstążki z Projektanta wstążki do XML wstążki
Porady: pokazywanie błędów dodatków interfejsu użytkownika
Koncepcje
Uzyskiwanie dostępu do wstążki w czasie wykonywania
Model obiektu Wstążka ― Omówienie
Dostosowywanie Wstążki do programu Outlook