Vue d'ensemble du modèle objet de ruban
Le Visual Studio Tools pour Office Runtime expose un modèle objet fortement typé que vous pouvez utiliser pour obtenir et définir les propriétés de contrôles de ruban au moment de l'exécution. Par exemple, vous pouvez remplir dynamiquement des contrôles de menu ou afficher et masquer des contrôles en fonction du contexte. Vous pouvez également ajouter des onglets, des groupes et des contrôles à un ruban, mais uniquement avant le chargement du ruban par l'application Office. Pour plus d'informations, consultez Définition de propriétés qui passent en lecture seule.
S'applique à : Les informations contenues dans cette rubrique s'appliquent aux projets de niveau document et de niveau application pour les applications suivantes : Excel 2007, Excel 2010, InfoPath 2007, InfoPath 2010, Outlook 2007, Outlook 2010, PowerPoint 2007, PowerPoint 2010, Project 2010; Visio 2010, Word 2007 et Word 2010. Pour en savoir plus, consultez Fonctionnalités disponibles par type d'application et de projet Office.
Ce modèle objet de ruban se compose principalement de la classe du ruban, des événements du ruban et des classes de contrôle du ruban.
Classe du ruban
Lorsque vous ajoutez un nouvel élément Ruban (Concepteur visuel) à un projet, Visual Studio ajoute une classe Ribbon à votre projet. Si votre projet cible .NET Framework 4, la classe Ribbon hérite de la classe RibbonBase. Si votre projet cible .NET Framework 3.5, la classe du ruban hérite de la classe OfficeRibbon.
Cette classe apparaît comme une classe partielle répartie entre le fichier de code du ruban et le fichier de code du Concepteur de ruban.
Événements du ruban
La classe du ruban contient les trois événements suivants :
Projets qui ciblent .NET Framework 4 |
Projets qui ciblent .NET Framework 3.5 |
Description |
---|---|---|
Déclenché lorsque l'application Office charge la personnalisation du ruban. Le gestionnaire d'événements Load est ajouté automatiquement au fichier de code du ruban. Utilisez ce gestionnaire d'événements pour exécuter du code personnalisé lors du chargement du ruban. |
||
Permet de mettre en cache des images dans la personnalisation du ruban lors du chargement du ruban. Vous améliorerez légèrement les performances en écrivant du code pour mettre en cache les images du ruban dans ce gestionnaire d'événements. Pour plus d'informations, consultez LoadImage. |
||
Déclenché lorsque l'instance du ruban se ferme. |
Contrôles du ruban
L'espace de noms Microsoft.Office.Tools.Ribbon contient un type pour chaque contrôle inclus dans le groupe Contrôles de ruban Office de la Boîte à outils.
Le tableau suivant décrit le type de chaque contrôle de ruban. Pour obtenir une description de chaque contrôle, consultez Vue d'ensemble du ruban.
Nom du contrôle |
Nom de classe |
---|---|
Box |
|
Button |
|
Buttongroup |
|
CheckBox |
|
ComboBox |
|
DropDown |
|
EditBox |
|
Gallery |
|
Groupe |
|
Étiquette |
|
Menu |
|
Separator |
|
SplitButton |
|
Onglet |
|
ToggleButton |
L'espace de noms Microsoft.Office.Tools.Ribbon utilise le préfixe « Ribbon » pour ces types afin d'éviter une collision de nom avec les classes de contrôle de l'espace de noms System.Windows.Forms.
Lorsque vous ajoutez un contrôle au Concepteur de ruban, ce dernier déclare la classe pour ce contrôle comme un champ dans son fichier de code.
Réalisation de tâches courantes à l'aide des propriétés des contrôles du ruban
Chaque contrôle du ruban contient des propriétés que vous pouvez utiliser pour effectuer différentes tâches, telles que l'assignation d'une étiquette à un contrôle ou le masquage et l'affichage de contrôles.
Dans certains cas, des propriétés passent en lecture seule après le chargement du ruban ou l'ajout d'un contrôle à un menu dynamique. Pour plus d'informations, consultez Définition de propriétés qui passent en lecture seule.
Le tableau suivant décrit certaines tâches que vous pouvez effectuer à l'aide de propriétés de contrôle du ruban.
Pour cette tâche : |
Procédez comme suit : |
---|---|
Masquer ou afficher un contrôle. |
Utilisez la propriété Visible. |
Activer ou désactiver un contrôle. |
Utilisez la propriété Enabled. |
Définir la taille d'un contrôle. |
Utilisez la propriété ControlSize. |
Obtenir l'image qui s'affiche sur un contrôle. |
Utilisez la propriété Image. |
Modifier l'étiquette d'un contrôle. |
Utilisez la propriété Label. |
Ajouter des données définies par l'utilisateur à un contrôle. |
Utilisez la propriété Tag. |
Obtenir les éléments d'un contrôle RibbonBox, RibbonDropDown, RibbonGallery ou |
Utilisez la propriété Items. |
Ajouter des éléments à un contrôle RibbonComboBox, RibbonDropDown ou RibbonGallery. |
Utilisez la propriété Items. |
Ajouter des contrôles à un RibbonMenu. |
Utilisez la propriété Items. Pour ajouter des contrôles au RibbonMenu après le chargement du ruban dans l'application Office, vous devez affecter la valeur true à la propriété Dynamic avant le chargement. Pour plus d'informations, consultez Définition de propriétés qui passent en lecture seule. |
Obtenir l'élément sélectionné d'un RibbonComboBox, |
Utilisez la propriété SelectedItem. Pour un RibbonComboBox, utilisez la propriété Text. |
Obtenir les groupes d'un RibbonTab. |
Utilisez la propriété Groups. |
Spécifier le nombre de lignes et de colonnes apparaissant dans un RibbonGallery. |
Utilisez les propriétés RowCount et ColumnCount. |
Définition de propriétés qui passent en lecture seule
Certaines propriétés peuvent être définies uniquement avant le chargement du ruban. Elles peuvent être définies depuis trois emplacements :
Dans la fenêtre Propriétés de Visual Studio.
Dans le constructeur de la classe du ruban.
Dans la méthode CreateRibbonExtensibilityObject de la classe ThisAddin, ThisWorkbook ou ThisDocument de votre projet.
Les menus dynamiques comportent certaines exceptions. Vous pouvez créer des contrôles, définir leurs propriétés puis les ajouter à un menu dynamique au moment de l'exécution, même après chargement du ruban qui contient le menu.
Les propriétés des contrôles que vous ajoutez à un menu dynamique peuvent être définies à tout moment.
Pour plus d'informations, consultez Propriétés qui passent en lecture seule.
Définition des propriétés dans le constructeur du ruban
Vous pouvez définir les propriétés d'un contrôle de ruban dans le constructeur de la classe du ruban. Ce code doit apparaître après l'appel à la méthode InitializeComponent. L'exemple suivant ajoute un nouveau bouton à un groupe s'il est actuellement 17 heures (heure du Pacifique) (UTC-8) au moins.
Pour les projets qui ciblent .NET Framework 4, ajoutez le code suivant :
<System.Diagnostics.DebuggerNonUserCode()> _
Public Sub New()
MyBase.New(Globals.Factory.GetRibbonFactory())
'This call is required by the Component Designer.
InitializeComponent()
Dim MyButton As Microsoft.Office.Tools.Ribbon.RibbonButton = _
Me.Factory.CreateRibbonButton()
MyButton.Label = "New Button"
If System.DateTime.Now.Hour > 16 Then
Group1.Items.Add(MyButton)
End If
End Sub
public Ribbon1()
: base(Globals.Factory.GetRibbonFactory())
{
InitializeComponent();
if (System.DateTime.Now.Hour > 16)
{
Microsoft.Office.Tools.Ribbon.RibbonButton button =
this.Factory.CreateRibbonButton();
button.Label = "New Button";
group1.Items.Add(button);
}
}
Pour les projets qui ciblent .NET Framework 3.5, ajoutez le code suivant :
<System.Diagnostics.DebuggerNonUserCode()> _
Public Sub New()
MyBase.New()
'This call is required by the Component Designer.
InitializeComponent()
If DateTime.Now.Hour > 16 Then
Group1.Items.Add(New RibbonButton())
CType(Group1.Items.Last(), RibbonButton).Label = "New Button"
End If
End Sub
public Ribbon1()
{
InitializeComponent();
if (DateTime.Now.Hour > 16)
{
group1.Items.Add(new RibbonButton());
((RibbonButton)group1.Items.Last()).Label = "New Button";
}
}
Dans les projets Visual C# que vous avez mis à niveau de Visual Studio 2008, le constructeur s'affiche dans le fichier code du ruban.
Dans les projets Visual Basic ou Visual C# que vous avez créé dans Visual Studio 2010, le constructeur s'affiche dans le fichier code du Concepteur de ruban. Ce fichier est nommé YourRibbonItem.Designer.cs ou YourRibbonItem.Designer.vb. Pour afficher ce fichier dans les projets Visual Basic, vous devez au préalable cliquer sur le bouton Afficher tous les fichiers de l'Explorateur de solutions.
Définition des propriétés dans la méthode CreateRibbonExtensibilityObject
Vous pouvez définir les propriétés d'un contrôle de ruban lorsque vous substituez la méthode CreateRibbonExtensibilityObject dans la classe ThisAddin, ThisWorkbook ou ThisDocument de votre projet. Pour plus d'informations sur la méthode CreateRibbonExtensibilityObject, consultez Vue d'ensemble du ruban.
L'exemple suivant définit les propriétés du ruban dans la méthode CreateRibbonExtensibilityObject de la classe ThisWorkbook d'un projet de classeur Excel.
Pour les projets qui ciblent .NET Framework 4, ajoutez le code suivant :
Protected Overrides Function CreateRibbonExtensibilityObject() _
As Microsoft.Office.Core.IRibbonExtensibility
Dim myCondition As Boolean = True
If myCondition = True Then
Dim tempRibbon As New Ribbon1()
tempRibbon.Tab1.ControlId.ControlIdType = _
Microsoft.Office.Tools.Ribbon.RibbonControlIdType.Office
tempRibbon.Tab1.ControlId.OfficeId = "TabHome"
Return Globals.Factory.GetRibbonFactory.CreateRibbonManager _
(New Microsoft.Office.Tools.Ribbon.IRibbonExtension() {tempRibbon})
Else
Dim tempRibbon As New Ribbon2()
tempRibbon.Tab1.ControlId.ControlIdType = _
Microsoft.Office.Tools.Ribbon.RibbonControlIdType.Office
tempRibbon.Tab1.ControlId.OfficeId = "TabInsert"
Return Globals.Factory.GetRibbonFactory.CreateRibbonManager _
(New Microsoft.Office.Tools.Ribbon.IRibbonExtension() {tempRibbon})
End If
End Function
protected override Microsoft.Office.Core.IRibbonExtensibility
CreateRibbonExtensibilityObject()
{
bool myCondition = false;
if (myCondition == true)
{
Ribbon1 tempRibbon = new Ribbon1();
tempRibbon.tab1.ControlId.ControlIdType =
Microsoft.Office.Tools.Ribbon.RibbonControlIdType.Office;
tempRibbon.tab1.ControlId.OfficeId = "TabHome";
return Globals.Factory.GetRibbonFactory().CreateRibbonManager(
new Microsoft.Office.Tools.Ribbon.IRibbonExtension[]
{ tempRibbon });
}
else
{
Ribbon2 tempRibbon = new Ribbon2();
tempRibbon.tab1.ControlId.ControlIdType =
Microsoft.Office.Tools.Ribbon.RibbonControlIdType.Office;
tempRibbon.tab1.ControlId.OfficeId = "TabInsert";
return Globals.Factory.GetRibbonFactory().CreateRibbonManager(
new Microsoft.Office.Tools.Ribbon.IRibbonExtension[] { tempRibbon });
}
}
Pour les projets qui ciblent .NET Framework 3.5, ajoutez le code suivant :
Protected Overrides Function CreateRibbonExtensibilityObject() _
As Microsoft.Office.Core.IRibbonExtensibility
Dim myCondition As Boolean = True
If myCondition = True Then
Dim tempRibbon As New Ribbon1()
tempRibbon.Tab1.ControlId.ControlIdType = _
Microsoft.Office.Tools.Ribbon.RibbonControlIdType.Office
tempRibbon.Tab1.ControlId.OfficeId = "TabHome"
Return New Microsoft.Office.Tools.Ribbon.RibbonManager _
(New Microsoft.Office.Tools.Ribbon.OfficeRibbon() {tempRibbon})
Else
Dim tempRibbon As New Ribbon2()
tempRibbon.Tab1.ControlId.ControlIdType = _
Microsoft.Office.Tools.Ribbon.RibbonControlIdType.Office
tempRibbon.Tab1.ControlId.OfficeId = "TabInsert"
Return New Microsoft.Office.Tools.Ribbon.RibbonManager _
(New Microsoft.Office.Tools.Ribbon.OfficeRibbon() {tempRibbon})
End If
End Function
protected override Microsoft.Office.Core.IRibbonExtensibility
CreateRibbonExtensibilityObject()
{
bool myCondition = true;
if (myCondition == true)
{
Ribbon1 tempRibbon = new Ribbon1();
tempRibbon.tab1.ControlId.ControlIdType =
Microsoft.Office.Tools.Ribbon.RibbonControlIdType.Office;
tempRibbon.tab1.ControlId.OfficeId = "TabHome";
return new Microsoft.Office.Tools.Ribbon.RibbonManager(
new Microsoft.Office.Tools.Ribbon.OfficeRibbon[]
{ tempRibbon });
}
else
{
Ribbon2 tempRibbon = new Ribbon2();
tempRibbon.tab1.ControlId.ControlIdType =
Microsoft.Office.Tools.Ribbon.RibbonControlIdType.Office;
tempRibbon.tab1.ControlId.OfficeId = "TabInsert";
return new Microsoft.Office.Tools.Ribbon.RibbonManager(
new Microsoft.Office.Tools.Ribbon.OfficeRibbon[]
{ tempRibbon });
}
}
Propriétés qui passent en lecture seule
Le tableau suivant décrit des propriétés qui peuvent être définies uniquement avant le chargement du ruban.
Notes
Vous pouvez définir à tout moment les propriétés des contrôles sur les menus dynamiques. Dans ce cas, le tableau suivant ne s'applique pas.
Propriété |
Classe de contrôle du ruban |
---|---|
BoxStyle |
|
ButtonType |
|
ColumnCount |
|
ControlId |
|
DialogLauncher |
|
Dynamique |
|
Global |
|
Groups |
|
ImageName |
|
ItemSize |
|
MaxLength |
|
Nom |
|
Position |
|
RibbonType |
|
RowCount |
|
ShowItemImage |
|
ShowItemLabel |
|
ShowItemSelection |
|
SizeString |
|
StartFromScratch |
|
Tabulations |
|
Titre |
Définition des propriétés des rubans qui apparaissent dans les Inspecteurs Outlook
Une nouvelle instance du ruban est créée à chaque fois qu'un utilisateur ouvre un Inspecteur dans lequel le ruban apparaît. Toutefois, les propriétés répertoriées dans le tableau ci-dessus doivent être définies avant la création de la première instance du ruban. Une fois la première instance créée, ces propriétés passent en lecture seule car l'instance définit le fichier XML utilisé par Outlook pour charger le ruban.
Si votre logique conditionnelle affecte à l'une de ces propriétés une valeur différente lorsque d'autres instances du ruban sont créées, ce code sera sans effet.
Notes
Assurez-vous que la propriété Name est définie pour chaque contrôle que vous ajoutez à un ruban Outlook. Si vous ajoutez un contrôle à un ruban Outlook au moment de l'exécution, vous devez définir cette propriété dans votre code. Si vous ajoutez un contrôle à un ruban Outlook au moment du design, la propriété Name est définie automatiquement.
Événements de contrôle du ruban
Chaque classe de contrôle contient un ou plusieurs événements. Le tableau suivant décrit ces événements.
Événement |
Description |
---|---|
Click |
Se produit suite à un clic sur un contrôle. |
TextChanged |
Se produit lors de la modification du texte d'une zone d'édition ou d'une zone de liste déroulante. |
ItemsLoading |
Se produit lorsqu'Office demande la collection Items du contrôle. Office met la collection Items en cache jusqu'à ce que votre code modifie les propriétés du contrôle ou que vous appeliez la méthode IRibbonUI.InvalidateControl(String). |
ButtonClick |
Se produit suite à un clic sur un bouton dans un contrôle RibbonGallery ou RibbonDropDown. |
SelectionChanged |
Se produit lors de la modification de la sélection d'un RibbonDropDown ou d'un RibbonGallery. |
DialogLauncherClick |
Se produit suite à un clic sur l'icône du lanceur de boîte de dialogue dans l'angle inférieur droit d'un groupe. |
Les gestionnaires d'événements pour ces événements présentent les deux paramètres suivants.
Paramètre |
Description |
---|---|
sender |
Object qui représente le contrôle qui a déclenché l'événement. |
e |
RibbonControlEventArgs qui contient Microsoft.Office.Core.IRibbonControl. Utilisez ce contrôle pour accéder à des propriétés qui ne sont pas disponibles dans le modèle objet de ruban fourni par le Visual Studio Tools pour Office Runtime. |
Voir aussi
Tâches
Comment : démarrer avec la personnalisation du ruban
Procédure pas à pas : création d'un onglet personnalisé à l'aide du Concepteur de ruban
Procédure pas à pas : mise à niveau des contrôles sur un ruban au moment de l'exécution
Comment : personnaliser un onglet intégré
Comment : personnaliser le menu Microsoft Office
Comment : exporter un ruban à partir du Concepteur de ruban vers l'élément XML Ribbon
Comment : afficher les erreurs de l'interface utilisateur du complément
Référence
Concepts
Accès au ruban au moment de l'exécution
Personnalisation d'un ruban pour Outlook