(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Exemplarische Vorgehensweise: Aktualisieren der Steuerelemente in einer Multifunktionsleiste zur Laufzeit

In dieser exemplarischen Vorgehensweise wird gezeigt, wie mit dem Menüband-Objektmodell die Steuerelemente auf einem Menüband nach dem Laden des Menübands in die Office-Anwendung aktualisiert werden.

Betrifft: Die Informationen in diesem Thema betreffen Projekte auf Dokument- und auf Anwendungsebene für die folgenden Anwendungen: Excel 2013 und Excel 2010, InfoPath 2013 und InfoPath 2010, Outlook 2013 und Outlook 2010, PowerPoint 2013 und PowerPoint 2010, Project 2013 und Project 2010, Visio 2013 und Visio 2010, Word 2013 und Word 2010. Weitere Informationen finden Sie unter Verfügbare Funktionen nach Office-Anwendung und Projekttyp.

In dem Beispiel werden die Daten der Northwind-Beispieldatenbank entnommen, um ein Kombinationsfeld und ein Menü in Microsoft Office Outlook auszufüllen. Elemente, die Sie in diesen Steuerelementen auswählen, füllen automatisch Felder wie Zu und Betreff in einer E-Mail.

In dieser exemplarischen Vorgehensweise werden die folgenden Aufgaben veranschaulicht:

  • Erstellen eines neuen Outlook-Add-In-Projekts

  • Entwerfen einer benutzerdefinierten Menübandgruppe

  • Hinzufügen der benutzerdefinierten Gruppe zu einer integrierten Registerkarte

  • Aktualisieren von Steuerelementen auf dem Menüband während der Laufzeit

HinweisHinweis

Auf Ihrem Computer werden möglicherweise andere Namen oder Speicherorte für die Benutzeroberflächenelemente von Visual Studio angezeigt als die in den folgenden Anweisungen aufgeführten. Die von Ihnen verwendete Visual Studio-Edition und die Einstellungen legen diese Elemente fest. Weitere Informationen finden Sie unter Anpassen der Entwicklungseinstellungen in Visual Studio.

Zum Durchführen dieser exemplarischen Vorgehensweise benötigen Sie die folgenden Komponenten:

Erstellen Sie zuerst ein Outlook-Add-In-Projekt.

So erstellen Sie ein neues Outlook-Add-In-Projekt

  1. In Visual Studio erstellen Sie ein Outlook 2010 oder Outlook 2013 Add-In-Projekte mit dem Namen " Ribbon_Update_At_Runtime ".

  2. Wählen Sie im Dialogfeld Neues Projekt die Option Projektmappenverzeichnis erstellen.

  3. Speichern Sie das Projekt im Standardprojektverzeichnis.

    Weitere Informationen finden Sie unter Gewusst wie: Erstellen von Office-Projekten in Visual Studio.

Das Menüband für dieses Beispiel wird angezeigt, wenn ein Benutzer eine neue E-Mail verfasst. Wenn Sie eine benutzerdefinierte Gruppe für das Menüband erstellen möchten, fügen Sie dem Projekt zuerst ein Menüband hinzu, und entwerfen Sie anschließend die Gruppe im Menüband-Designer. Mithilfe dieser benutzerdefinierten Gruppe können Sie Folge-E-Mail-Nachrichten für Kunden generieren, indem Sie einer Datenbank Namen und die bisherigen Bestellungen entnehmen.

So entwerfen Sie eine benutzerdefinierte Gruppe

  1. Klicken Sie im Menü Projekt auf Neues Element hinzufügen.

  2. Wählen Sie im Dialogfeld Neues Element hinzufügen die Option Menüband (Visual Designer) aus.

  3. Ändern Sie den Namen des neuen Menübands in CustomerRibbon, und klicken Sie anschließend auf Hinzufügen.

    Die Datei CustomerRibbon.cs oder CustomerRibbon.vb wird im Menüband-Designer geöffnet. Sie beinhaltet eine Standardregisterkarte und eine Gruppe.

  4. Klicken Sie auf den Menüband-Designer, um diesen auszuwählen.

  5. Klicken Sie im Fenster Eigenschaften auf den Dropdownpfeil neben der RibbonType-Eigenschaft, und klicken Sie anschließend af Microsoft.Outlook.Mail.Compose.

    Beim Erstellen einer neuen E-Mail-Nachricht in Outlook wird daraufhin wird das Menüband angezeigt.

  6. Klicken Sie im Menüband-Designer auf Group1, um diese Option auszuwählen.

  7. Legen Sie im Fenster Eigenschaften die Label-Eigenschaft auf "Customer Purchases" fest.

  8. Ziehen Sie von der Registerkarte Steuerelemente für Office-Menübänder der Toolbox ein Steuerelement mit der Bezeichnung ComboBox zur Gruppe Customer Purchases.

  9. Klicken Sie auf ComboBox1, um das Element auszuwählen.

  10. Legen Sie im Fenster Eigenschaften die Label-Eigenschaft auf "Customers" fest.

  11. Ziehen Sie von der Registerkarte Steuerelemente für Office-Menübänder der Toolbox ein Menü zur Gruppe Customer Purchases.

  12. Legen Sie im Fenster Eigenschaften die Label-Eigenschaft auf "Product Purchased" fest.

  13. Legen Sie Dynamic auf true fest.

    Dadurch können Sie Steuerelemente für das Menü während der Laufzeit hinzufügen und entfernen, nachdem das Menüband in die Office-Anwendung geladen wurde.

Eine integrierte Registerkarte ist eine Registerkarte, die sich bereits auf dem Menüband eines Outlook Explorers oder -Inspektors befindet. In dieser Prozedur wird die benutzerdefinierte Gruppe einer integrierten Registerkarte hinzugefügt und anschließend die Position der benutzerdefinierten Gruppe auf der Registerkarte angegeben.

So fügen die benutzerdefinierte Gruppe einer integrierten Registerkarte hinzu

  1. Klicken Sie auf die Registerkarte TabAddins (Integriert), um diese auszuwählen.

  2. Erweitern Sie im Fenster Eigenschaften die ControlId-Eigenschaft, und legen Sie die OfficeId-Eigenschaft auf "TabNewMailMessage" fest.

    Dadurch wird die Gruppe Customer Purchases der Registerkarte Nachrichten des Menübands hinzugefügt, das in einer neuen E-Mail-Nachricht angezeigt wird.

  3. Klicken Sie auf die Gruppe Customer Purchases, um diese auszuwählen.

  4. Erweitern Sie im Fenster Eigenschaften die Position-Eigenschaft, klicken Sie zuerst auf den Dropdownpfeil neben der PositionType-Eigenschaft und anschließend auf Microsoft.Outlook.Mail.Compose.

  5. Legen Sie die OfficeId-Eigenschaft auf "GroupClipboard" fest.

    Dadurch wird die Gruppe Customer Purchases vor der Gruppe Zwischenablage der Registerkarte Nachrichten angeordnet.

Verwenden Sie das Datenquellenfenster, um dem Projekt ein typisiertes Dataset hinzuzufügen.

So erstellen Sie die Datenquelle

  1. Klicken Sie im Menü Daten auf Neue Datenquelle hinzufügen.

    Der Assistent zum Konfigurieren von Datenquellen wird gestartet.

  2. Wählen Sie Datenbank aus, und klicken Sie auf Weiter.

  3. Wählen Sie Dataset aus, und klicken Sie auf Weiter.

  4. Wählen Sie eine Datenverbindung zur Northwind-Beispieldatenbank für Microsoft SQL Server Compact 4.0 aus, oder fügen Sie mithilfe der Schaltfläche Neue Verbindung eine neue Verbindung hinzu.

  5. Klicken Sie nach dem Auswählen oder Erstellen einer Verbindung auf Weiter.

  6. Klicken Sie auf Weiter, um die Verbindungszeichenfolge zu speichern.

  7. Erweitern Sie auf der Seite Datenbankobjekte auswählen den Knoten Tabellen.

  8. Aktivieren Sie das Kontrollkästchen neben jeden der folgenden Tabellen:

    1. Customers

    2. Order Details

    3. Orders

    4. Products

  9. Klicken Sie auf Fertig stellen.

Verwenden Sie das Menüband-Objektmodell zum Ausführen der folgenden Aufgaben:

  • Fügen Sie im Kombinationsfeld Customers Kundennamen hinzu.

  • Fügen Sie dem Menü Products Purchased Menü- und Schaltflächensteuerelemente hinzu, die Bestellungen und verkaufte Produkte darstellen.

  • Füllen Sie das To, Subject-Feld und das Body-Feld neuer E-Mail-Nachrichten aus. Verwenden Sie dabei Daten aus dem Kombinationsfeld Customers und dem Menü Products Purchased.

So aktualisieren Sie Steuerelemente in der benutzerdefinierten Gruppe mithilfe des Menüband-Objektmodells

  1. Klicken Sie im Menü Projekt auf Verweis hinzufügen.

  2. Wählen Sie im Dialogfeld Verweis hinzufügen auf der Registerkarte .NET die System.Data.Linq aus-Assembly aus, und klicken Sie anschließend auf OK.

    Diese Assembly beinhaltet Klassen für die Verwendung von Language-Integrated Queries (LINQ). Mit LINQ werden Steuerelemente in der benutzerdefinierten Gruppe mit Daten aus der Northwind-Datenbank ausgefüllt.

  3. Klicken Sie im Projektmappen-Explorer auf CustomerRibbon.cs oder CustomerRibbon.vb, um diese Dateien auszuwählen.

  4. Klicken Sie im Menü Ansicht auf Code.

    Die Menüband-Codedatei wird im Code-Editor geöffnet.

  5. Fügen Sie am Anfang der Menüband-Codedatei die folgenden Anweisungen hinzu. Diese Anweisungen ermöglichen einfachen Zugriff auf LINQ-Namespaces und auf den Namespace der primären Interopassembly (PIA) von Outlook.

    
    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. Fügen Sie innerhalb der CustomerRibbon-Klasse den folgenden Code hinzu. In diesem Code werden die Datentabellen- und Tabellenadapter deklariert, mit denen Sie Informationen aus den Tabellen "Customer", "Orders", "Order Details" und "Product" der Northwind-Datenbank speichern.

    
    //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. Fügen Sie den folgenden Codeblock der CustomerRibbon-Klasse hinzu. Durch diesen Code werden drei Hilfsmethoden hinzugefügt, die zur Laufzeit Steuerelemente für das Menüband erstellen.

    
    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. Ersetzen Sie die CustomerRibbon_Load-Ereignishandlermethode durch folgenden Code. In diesem Code wird für die folgenden Aufgaben eine LINQ-Abfrage verwendet:

    • Füllen Sie das Kombinationsfeld Customers mithilfe der ID und des Namens von 20 Kunden aus der Northwind-Datenbank aus.

    • Ruft die PopulateSalesOrderInfo-Hilfsmethode auf. Mit dieser Methode wird das Menü ProductsPurchased mit Verkaufauftragsnummern aktualisiert, die sich auf den derzeit ausgewählten Kunden beziehen.

    
    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. Fügen Sie der CustomerRibbon-Klasse folgenden Code hinzu. In diesem Code werden für die folgenden Aufgaben LINQ-Abfragen verwendet:

    • Fügt dem Menü ProductsPurchased für jeden Verkaufsauftrag in Zusammenhang mit dem ausgewählten Kunden ein Untermenü hinzu.

    • Fügt jedem Untermenü Schaltflächen für die Produkte in Zusammenhang mit dem Verkaufsauftrag hinzu.

    • Fügt jeder Schaltfläche Ereignishandler hinzu.

    
    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. Doppelklicken Sie im Projektmappen-Explorer auf die Menüband-Codedatei.

    Der Menüband-Designer wird geöffnet.

  11. Doppelklicken Sie im Menüband-Designer auf das Kombinationsfeld Customers.

    Die Menüband-Codedatei wird im Code-Editor geöffnet, und der ComboBox1_TextChanged-Ereignishandler wird angezeigt.

  12. Ersetzen Sie den ComboBox1_TextChanged-Ereignishandler durch folgenden Code. Mit diesem Code werden die folgenden Aufgaben ausgeführt:

    • Ruft die PopulateSalesOrderInfo-Hilfsmethode auf. Mit dieser Methode wird das Menü Products Purchased mit Verkaufsauftragsnummern aktualisiert, die sich auf den derzeit ausgewählten Kunden beziehen.

    • Ruft die PopulateMailItem-Hilfsmethode auf und übergibt den aktuellen Text (der ausgewählte Kundenname). Mit dieser Methode wird das To-Feld, das Subject-Feld und das Body-Feld von neuen E-Mail-Nachrichten ausgefüllt.

    
    private void comboBox1_TextChanged(object sender,
        RibbonControlEventArgs e)
    {
        PopulateSalesOrderInfo();
        PopulateMailItem(comboBox1.Text);
    }
    
    
    
  13. Fügen Sie der CustomerRibbon-Klasse den Click-Ereignishandler hinzu. Mit diesem Code wird der Name der ausgewählten Produkte dem Body-Feld neuer E-Mail-Nachrichten hinzugefügt.

    
    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. Fügen Sie der CustomerRibbon-Klasse folgenden Code hinzu. Mit diesem Code werden die folgenden Aufgaben ausgeführt:

    • Füllt die To-Zeile neuer E-Mail-Nachrichten mithilfe der E-Mail-Adresse des derzeit ausgewählten Kunden aus.

    • Fügt dem Subject-Feld und dem Body-Feld neuer E-Mail-Nachrichten Text hinzu.

    
    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: ";
    }
    
    
    

Beim Öffnen eines neuen E-Mail-Formulars in Outlook wird auf der Registerkarte Nachrichten des Menübands eine benutzerdefinierte Gruppe mit der Bezeichnung Customer Purchases angezeigt.

Wählen Sie zum Erstellen einer Folge-E-Mail-Nachricht für Kunden einen Kunden und anschließend vom Kunden erworbene Produkte aus. Die Steuerelemente in der Gruppe Customer Purchases werden während der Laufzeit mit Daten aus der Northwind-Datenbank aktualisiert.

So testen Sie die Steuerelemente in der benutzerdefinierten Gruppe

  1. Drücken Sie F5, um das Projekt auszuführen.

    Outlook wird gestartet.

  2. Zeigen Sie in Outlook im Menü Datei auf Neu, und klicken Sie dann auf E-Mail-Nachricht.

    Folgende Aktionen werden ausgeführt:

    • Ein neues Inspektorfenster für E-Mail-Nachrichten wird angezeigt.

    • Auf der Registerkarte Nachrichten des Menübands wird die Gruppe Customer Purchases vor der Gruppe Zwischenablage angezeigt.

    • Das Kombinationsfeld Customers in der Gruppe wird mit den Namen der Kunden in der Northwind-Datenbank aktualisiert.

  3. Wählen Sie auf der Registerkarte Nachrichten des Menübands in der Gruppe Customer Purchases im Kombinationsfeld Customers einen Kunden aus.

    Folgende Aktionen werden ausgeführt:

    • Das Menü Products Purchased wird so aktualisiert, dass jeder Auftrag für den ausgewählten Kunden angezeigt wird.

    • Jedes Auftragsuntermenü wird so aktualisiert, dass die in dieser Reihenfolge gekauften Produkte angezeigt werden.

    • Die E-Mail-Adresse des ausgewählten Kunden wird der Zeile An der E-Mail-Nachricht hinzugefügt, und die Betreffzeile und der Textkörper der E-Mail-Nachricht werden mit Text ausgefüllt.

  4. Klicken Sie im Menü Products Purchased auf einen beliebigen Verkaufsauftrag, und klicken Sie anschließend auf ein Produkt im Verkaufsauftrag.

    Der Produktname wird dem Textkörper der E-Mail-Nachricht hinzugefügt.

Weitere Informationen über das Anpassen der Office-Benutzeroberfläche finden Sie in diesen Themen:

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft