リボン オブジェクト モデルの概要
Visual Studio Tools for Office ランタイムによって公開される厳密に型指定されたオブジェクト モデルを使って、リボン コントロールのプロパティを実行時に取得および設定することができます。 たとえば、メニュー コントロールを動的に設定したり、コントロールの表示/非表示をコンテキストに応じて切り替えたりすることができます。 Office アプリケーションがリボンを読み込む前であれば、タブ、グループ、およびコントロールをリボンに追加することもできます。 詳しくは、「読み取り専用になるプロパティの設定」をご覧ください。
適用対象: このトピックの情報は、Excel、InfoPath 2013 と InfoPath 2010、Outlook、PowerPoint、Project、Visio、Word のアプリケーションのドキュメント レベルのプロジェクトおよび VSTO アドイン プロジェクトに適用されます。 詳細については、「Office アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。
このリボン オブジェクト モデルの主要な要素は、リボン クラス、リボン イベント、およびリボン コントロール クラスです。
リボン クラス
プロジェクトに新しい [リボン (ビジュアルなデザイナー)] 項目を追加すると、Visual Studio によって、プロジェクトにリボン クラスが追加されます。 リボン クラスは RibbonBase クラスを継承します。
このクラスは、リボン コード ファイルとリボン デザイナー コード ファイルを分割する部分クラスとして位置付けられます。
リボン イベント
リボン クラスには、次の 3 つのイベントが含まれています。
イベント | 説明 |
---|---|
Load | Office アプリケーションがリボンのカスタマイズを読み込んだときに発生します。 Load イベント ハンドラーがリボン コード ファイルに自動的に追加されます。 このイベント ハンドラーを使用して、リボンが読み込まれるときにカスタム コードを実行します。 |
LoadImage | リボンが読み込まれたときに、リボンのカスタマイズ内のイメージをキャッシュできます。 これにより、リボンのイメージをこのイベント ハンドラーにキャッシュするコードを作成する場合に、パフォーマンスを多少向上させることができます。 詳細については、LoadImageを参照してください。 |
Close | リボンのインスタンスを閉じたときに発生します。 |
リボン コントロール
Microsoft.Office.Tools.Ribbon 名前空間には、[ツールボックス] の [Office リボン コントロール] グループに表示される各コントロールの型が含まれています。
各 Ribbon
コントロールの型を次の表に示します。 各コントロールの詳細については、「リボンの概要」を参照してください。
コントロール名 | クラス名 |
---|---|
ボックス | RibbonBox |
Button | RibbonButton |
ButtonGroup | RibbonButtonGroup |
CheckBox | RibbonCheckBox |
ComboBox | RibbonComboBox |
DropDown | RibbonDropDown |
EditBox | RibbonEditBox |
ギャラリー | RibbonGallery |
グループ | RibbonGroup |
ラベル | RibbonLabel |
メニュー | RibbonMenu |
Separator | RibbonSeparator |
SplitButton | RibbonSplitButton |
Tab | RibbonTab |
ToggleButton | RibbonToggleButton |
Microsoft.Office.Tools.Ribbon 名前空間では、System.Windows.Forms 名前空間に属するコントロール クラスとの名前の衝突を回避するために、型名にプレフィックス "Ribbon" が追加されています。
リボン デザイナーにコントロールを追加すると、そのコントロールのクラスがリボン デザイナー コード ファイルにフィールドとして宣言されます。
リボン コントロールのプロパティを使用する一般的なタスク
各 Ribbon
コントロールには、コントロールへのラベルの割り当てやコントロールの表示/非表示の切り替えなど、さまざまなタスクの実行に使用できるプロパティが含まれています。
リボンが読み込まれた後、またはコントロールが動的メニューに追加された後で、プロパティが読み取り専用になることがあります。 詳しくは、「読み取り専用になるプロパティの設定」をご覧ください。
Ribbon
コントロールのプロパティを使用して実行できる一部のタスクについて、次の表で説明します。
タスク : | これを行うには、次の手順を実行します。 |
---|---|
コントロールの表示/非表示を切り替える。 | Visible プロパティを使用します。 |
コントロールを有効または無効にします。 | Enabled プロパティを使用します。 |
コントロールのサイズを設定する。 | ControlSize プロパティを使用します。 |
コントロールに表示するイメージを取得する。 | Image プロパティを使用します。 |
コントロールのラベルを変更する。 | Label プロパティを使用します。 |
ユーザー定義のデータをコントロールに追加する。 | Tag プロパティを使用します。 |
RibbonBox、RibbonDropDown、RibbonGallery、 RibbonSplitButton コントロール。 |
Items プロパティを使用します。 |
RibbonComboBox、RibbonDropDown、RibbonGallery のいずれかのコントロールに項目を追加する。 | Items プロパティを使用します。 |
RibbonMenu にコントロールを追加する。 | Items プロパティを使用します。 リボンが Office アプリケーションに読み込まれた後で RibbonMenu にコントロールを追加する場合は、リボンが Office アプリケーションに読み込まれる前に Dynamic プロパティを true に設定する必要があります。 詳しくは、「読み取り専用になるプロパティの設定」をご覧ください。 |
RibbonComboBox 内の選択された項目を取得する。 RibbonDropDown または RibbonGallery。 |
SelectedItem プロパティを使用します。 RibbonComboBox では、Text プロパティを使用します。 |
RibbonTab 上のグループを取得する。 | Groups プロパティを使用します。 |
RibbonGallery に表示する行および列の数を指定する。 | RowCount プロパティおよび ColumnCount プロパティを使用します。 |
読み取り専用になるプロパティを設定する
リボンが読み込まれる前にのみ設定できるプロパティがあります。 それらのプロパティは次の 3 つの方法で設定できます。
Visual Studio のプロパティ ウィンドウ。
リボン クラスのコンストラクター。
プロジェクトの
CreateRibbonExtensibilityObject
、ThisAddin
、またはThisWorkbook
クラスのThisDocument
メソッド動的メニューにはいくつかの例外があります。 メニューを含むリボンが読み込まれた後でも、実行時に新しいコントロールの作成、プロパティの設定、および動的メニューへの追加を行うことができます。
動的メニューに追加するコントロールのプロパティは、いつでも設定できます。
詳しくは、「読み取り専用になるプロパティ」をご覧ください。
リボンのコンストラクターでプロパティを設定する
Ribbon
コントロールのプロパティを、リボン クラスのコンストラクターで設定できます。 このコードは、InitializeComponent
メソッドの呼び出しの後に置く必要があります。 次のコード例は、現在の時刻が太平洋標準時間 (UTC-8) の 17:00 以降である場合に、新しいボタンをグループに追加します。
次のコードを追加します。
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);
}
}
Visual Studio 2008 からアップグレードした Visual C# プロジェクトでは、リボン コード ファイルにコンストラクターがあります。
Visual Basic プロジェクト、または Visual Studio 2013 で作成した Visual C# プロジェクトでは、リボン デザイナー コード ファイルにコンストラクターがあります。 このファイルは、YourRibbonItem.Designer.cs または YourRibbonItem.Designer.vb という名前です。 Visual Basic プロジェクトでこのファイルを確認するには、まずソリューション エクスプローラーの [すべてのファイルの表示] をクリックする必要があります。
CreateRibbonExtensibilityObject メソッドでプロパティを設定する
プロジェクトの Ribbon
、CreateRibbonExtensibilityObject
、または ThisAddin
のいずれかのクラスの ThisWorkbook
メソッドをオーバーライドするときに、ThisDocument
コントロールのプロパティを設定できます。 CreateRibbonExtensibilityObject
メソッドについて詳しくは、「リボンの概要」をご覧ください。
次のコード例は、Excel ブック プロジェクトの ThisWorkbook
クラスの CreateRibbonExtensibilityObject
メソッドでリボンのプロパティを設定します。
次のコードを追加します。
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 });
}
}
読み取り専用になるプロパティ
リボンが読み込まれる前にのみ設定できるプロパティを次の表に示します。
Note
動的メニューのコントロールのプロパティは、いつでも設定できます。 この場合、次の表の内容は該当しません。
プロパティ | リボン コントロール クラス |
---|---|
BoxStyle | RibbonBox |
ButtonType | RibbonSplitButton |
ColumnCount | RibbonGallery |
ControlId | RibbonTab |
ダイアログ起動ツール | RibbonGroup |
動的 | RibbonMenu |
Global | OfficeRibbon |
グループ | RibbonTab |
ImageName | RibbonButton RibbonComboBox RibbonDialogLauncher RibbonDropDown RibbonEditBox RibbonGallery RibbonMenu RibbonSplitButton RibbonToggleButton |
ItemSize | RibbonMenu RibbonSplitButton |
MaxLength | RibbonComboBox RibbonEditBox |
名前 | RibbonComponent |
Position | RibbonButton RibbonCheckBox RibbonGallery RibbonGroup RibbonMenu RibbonSeparator RibbonSplitButton RibbonTab RibbonToggleButton |
RibbonType | OfficeRibbon |
行数 | RibbonGallery |
ShowItemImage | RibbonComboBox RibbonDropDown RibbonGallery |
ShowItemLabel | RibbonDropDown RibbonGallery |
ShowItemSelection | RibbonGallery |
SizeString | RibbonComboBox RibbonDropDown RibbonEditBox |
StartFromScratch | OfficeRibbon |
タブ | OfficeRibbon |
Title | RibbonSeparator |
Outlook インスペクターに表示されるリボンのプロパティを設定する
ユーザーがリボンを含むインスペクターを開くたびにリボンの新しいインスタンスが作成されます。 ただし、上の表に示すプロパティは、リボンの最初のインスタンスが作成される前にのみ設定できます。 最初のインスタンスが作成されると、そのインスタンスによって Outlook がリボンの読み込みに使用する XML ファイルを定義するため、これらのプロパティは読み取り専用になります。
リボンの他のインスタンスが作成されたときにこれらのプロパティを別の値に設定する条件ロジックがある場合、そのコードは何の効果ももたらしません。
Note
Outlook リボンに追加した各コントロールで [Name] プロパティが設定されるようにしてください。 実行時にコントロールを Outlook リボンに追加する場合は、このプロパティをコードで設定する必要があります。 デザイン時にコントロールを Outlook リボンに追加する場合は、Name プロパティが自動的に設定されます。
リボン コントロール イベント
各コントロール クラスに 1 つ以上のイベントが含まれています。 次の表は、それらのイベントについての説明です。
イベント | 説明 |
---|---|
をクリックします。 | コントロールがクリックされたときに発生します。 |
TextChanged | 編集ボックスまたはコンボ ボックス内のテキストが変更されたときに発生します。 |
ItemsLoading | コントロールの Items コレクションが Office から要求されたときに発生します。 Office は、コードがコントロールのプロパティを変更するか、InvalidateControl メソッドが呼び出されるまで、Items コレクションをキャッシュします。 |
ButtonClick | RibbonGallery または RibbonDropDown 内のボタンがクリックされたときに発生します。 |
SelectionChanged | RibbonDropDown または RibbonGallery 内の選択項目が変更されたときに発生します。 |
DialogLauncherClick | グループの右下にあるダイアログ ランチャー アイコンがクリックされたときに発生します。 |
これらのイベントのイベント ハンドラーには、次の 2 つのパラメーターがあります。
パラメーター | 説明 |
---|---|
送信者 | イベントを発生させたコントロールを表す Object。 |
e | RibbonControlEventArgs を格納している IRibbonControl。 このコントロールを使用すると、Visual Studio Tools for Office ランタイムによって提供されるリボン オブジェクト モデルには用意されていないプロパティにアクセスできます。 |