Sdílet prostřednictvím


Aktualizace přizpůsobení pásu karet migrovaných na rozhraní .NET Framework 4.5

Pokud váš projekt obsahuje přizpůsobení pásu karet vytvořené pomocí položky projektu pásu karet (Vizuální návrhář ), musíte v kódu projektu provést následující změny, pokud se cílová architektura změní na rozhraní .NET Framework 4 nebo novější.

  • Upravte vygenerovaný kód pásu karet.

  • Upravte veškerý kód, který vytváří instance ovládacích prvků pásu karet za běhu, zpracovává události pásu karet nebo nastaví umístění součásti pásu karet programově.

Aktualizace vygenerovaného kódu pásu karet

Pokud se cílová architektura projektu změní na rozhraní .NET Framework 4 nebo novější, musíte změnit vygenerovaný kód pro položku pásu karet provedením následujících kroků. Soubory kódu, které potřebujete aktualizovat, závisí na programovacím jazyce a na tom, jak jste projekt vytvořili:

  • V projektech Jazyka Visual Basic nebo v projektech Visual C#, které jste vytvořili v sadě Visual Studio 2012 nebo Visual Studio 2010, proveďte všechny kroky v souboru kódu na pásu karet (YourRibbonItem). Designer.cs nebo YourRibbonItem. Designer.vb). Pokud chcete zobrazit soubor kódu v projektech jazyka Visual Basic, klikněte v Průzkumník řešení na tlačítko Zobrazit všechny soubory.

  • V projektech Visual C#, které jste vytvořili v sadě Visual Studio 2008 a potom jste upgradovali na Visual Studio 2013, proveďte první dva kroky v souboru s kódem pásu karet (YourRibbonItem.cs nebo YourRibbonItem.vb) a proveďte zbývající kroky v souboru kódu pásu karet.

Změna vygenerovaného kódu pásu karet

  1. Upravte deklaraci třídy pásu karet tak, aby byla odvozena od RibbonBase namísto Microsoft.Office.Tools.Ribbon.OfficeRibbon.

  2. Upravte konstruktor třídy pásu karet, jak je znázorněno níže. Pokud jste do konstruktoru přidali libovolný vlastní kód, neměňte kód. V projektech jazyka Visual Basic upravte pouze konstruktor bez parametrů. Ignorujte druhý konstruktor.

    Následující příklad kódu ukazuje výchozí konstruktor třídy pásu karet v projektu, který cílí na rozhraní .NET Framework 3.5.

    public Ribbon1()
    {
        InitializeComponent();
    }
    

    Následující příklad kódu ukazuje výchozí konstruktor třídy pásu karet v projektu, který cílí na rozhraní .NET Framework 4 nebo novější.

    public Ribbon1()
        : base(Globals.Factory.GetRibbonFactory())
    {
        InitializeComponent();
    }
    
  3. InitializeComponent V metodě upravte veškerý kód, který vytváří ovládací prvek pásu karet tak, aby kód místo toho používal jednu z pomocných metod objektuRibbonFactory.

    Poznámka:

    V projektech Visual C# je nutné rozbalit oblast, která je pojmenovaná Component Designer generated code , aby se zobrazila InitializeComponent metoda.

    Předpokládejme například, že váš soubor obsahuje následující řádek kódu, který vytvoří instanci pojmenovaného RibbonButton button1 v projektu, který cílí na rozhraní .NET Framework 3.5.

    this.button1 = new Microsoft.Office.Tools.Ribbon.RibbonButton();
    

    V projektu, který cílí na rozhraní .NET Framework 4 nebo novější, musíte místo toho použít následující kód.

    this.button1 = this.Factory.CreateRibbonButton();
    

    Úplný seznam pomocných metod ovládacích prvků pásu karet najdete v tématu Vytvoření instance ovládacích prvků pásu karet.

  4. V projektech Visual C# upravte libovolný řádek kódu v InitializeComponent metodě, který místo toho používá EventHandler<TEventArgs> delegáta k použití konkrétního delegáta na pásu karet.

    Předpokládejme například, že váš soubor obsahuje následující řádek kódu, který zpracovává Click událost v projektu, který cílí na rozhraní .NET Framework 3.5.

    <CodeContentPlaceHolder>8 V projektu, který cílí na rozhraní .NET Framework 4 nebo novější, musíte místo toho použít následující kód.

    <CodeContentPlaceHolder>9 Úplný seznam delegátů pásu karet najdete v tématu Zpracování událostí pásu karet.

  5. V projektech jazyka Visual Basic vyhledejte ThisRibbonCollection třídu na konci souboru. Upravte deklaraci této třídy tak, aby již nedědila z Microsoft.Office.Tools.Ribbon.RibbonReadOnlyCollection.

Vytvoření instance ovládacích prvků pásu karet

Je nutné upravit jakýkoli kód, který dynamicky vytvoří instanci ovládacích prvků pásu karet. V projektech, které cílí na rozhraní .NET Framework 3.5, jsou ovládací prvky pásu karet třídy, které můžete vytvořit instanci přímo v určitých scénářích. V projektech, které cílí na rozhraní .NET Framework 4 nebo novější, jsou tato rozhraní rozhraní, která nelze vytvořit přímo. Ovládací prvky je nutné vytvořit pomocí metod, které objekt poskytuje RibbonFactory .

Objekt můžete získat RibbonFactory dvěma způsoby:

  • Použitím vlastnosti Factory třídy pásu karet. Použijte tento přístup z kódu ve své třídě pásu karet.

  • Globals.Factory.GetRibbonFactory Pomocí metody. Použijte tento přístup z kódu mimo svou třídu pásu karet. Další informace o třídě Globals naleznete v tématu Globální přístup k objektům v projektech Office.

    Následující příklad kódu ukazuje, jak vytvořit RibbonButton v pásu karet třídy v projektu, který cílí na rozhraní .NET Framework 4 nebo novější.

<CodeContentPlaceHolder>10<CodeContentPlaceHolder>11 Následující tabulka uvádí ovládací prvky, které můžete vytvořit programově, a metodu, která se má použít k vytvoření ovládacích prvků v projektech, které cílí na rozhraní .NET Framework 4 nebo novější.

Ovládací prvek Metoda RibbonFactory pro použití v .NET Framework 4 a novějších projektech
RibbonButton CreateRibbonButton
RibbonButtonGroup CreateRibbonButtonGroup
RibbonCheckBox CreateRibbonCheckBox
RibbonComboBox CreateRibbonComboBox
RibbonDialogLauncher CreateRibbonDialogLauncher
RibbonDropDown: CreateRibbonDropDown
RibbonDropDownItem CreateRibbonDropDownItem
RibbonEditBox CreateRibbonEditBox
RibbonGallery CreateRibbonGallery
RibbonGroup CreateRibbonGroup
RibbonLabel CreateRibbonLabel
RibbonManager CreateRibbonManager
RibbonMenu CreateRibbonMenu
RibbonSeparator CreateRibbonSeparator
RibbonSplitButton CreateRibbonSplitButton
RibbonTab CreateRibbonTab
RibbonToggleButton CreateRibbonToggleButton

Zpracování událostí pásu karet

Je nutné upravit jakýkoli kód, který zpracovává události ovládacích prvků pásu karet. V projektech, které cílí na rozhraní .NET Framework 3.5, tyto události zpracovává obecný EventHandler<TEventArgs> delegát. V projektech, které cílí na rozhraní .NET Framework 4 nebo novější, jsou tyto události nyní zpracovávány jinými delegáty.

Následující tabulka uvádí události pásu karet a delegáty přidružené k nim v projektech, které cílí na rozhraní .NET Framework 4 nebo novější.

Událost Delegování na použití v projektech .NET Framework 4 a novějších
LoadImage událost ve vygenerované třídě pásu karet RibbonLoadImageEventHandler
Load RibbonUIEventHandler
Click

Click

ItemsLoading

TextChanged

ButtonClick

ItemsLoading

SelectionChanged

TextChanged

ButtonClick

Click

ItemsLoading

DialogLauncherClick

ItemsLoading

Click

Click
RibbonControlEventHandler

Nastavení pozice součásti pásu karet prostřednictvím kódu programu

Je nutné upravit jakýkoli kód, který nastaví umístění skupin pásu karet, karet nebo ovládacích prvků. V projektech, které cílí na rozhraní .NET Framework 3.5, můžete pomocí AfterOfficeId metod BeforeOfficeId statické Microsoft.Office.Tools.Ribbon.RibbonPosition třídy přiřadit Position vlastnost skupiny, tabulátoru nebo ovládacího prvku. V projektech, které cílí na rozhraní .NET Framework 4 nebo novější, musíte k těmto metodám přistupovat pomocí RibbonPosition vlastnosti poskytované objektem RibbonFactory .

Objekt můžete získat RibbonFactory dvěma způsoby:

  • Factory Pomocí vlastnosti pásu karet třídy. Použijte tento přístup z kódu ve své třídě pásu karet.

  • Globals.Factory.GetRibbonFactory Pomocí metody. Použijte tento přístup z kódu mimo svou třídu pásu karet. Další informace o třídě Globals naleznete v tématu Globální přístup k objektům v projektech Office.

    Následující příklad kódu ukazuje, jak nastavit Position vlastnost karty v pásu karet třídy v projektu, který cílí na rozhraní .NET Framework 3.5.

this.tab1.Position = RibbonPosition.AfterOfficeId("TabHome");

Následující příklad kódu ukazuje stejný úkol v projektu, který cílí na rozhraní .NET Framework 4.

this.tab1.Position = this.Factory.RibbonPosition.AfterOfficeId("TabHome");