カスタム作業ウィンドウCustom task panes

作業ウィンドウは、通常、Microsoft Office アプリケーションのウィンドウの一辺にドッキングされているユーザー インターフェイス ウィンドウです。Task panes are user interface panels that are typically docked to one side of a window in a Microsoft Office application. カスタム作業ウィンドウは、独自の作業ウィンドウを作成し、ユーザーがソリューションの各機能にアクセスする際に使い慣れたインターフェイスを利用できるようにするものです。Custom task panes give you a way to create your own task pane and provide users with a familiar interface to access your solution's features. たとえば、インターフェイスにはドキュメントを変更するコードや、データ ソースのデータを表示するコードを実行するコントロールが含まれます。For example, the interface can contain controls that run code to modify documents or display data from a data source.

適用対象: このトピックの情報は、VSTO の追加に適用されます-Outlook のプロジェクトでします。Applies to: The information in this topic applies to VSTO Add-in projects for Outlook. 詳細については、「Office アプリケーションおよびプロジェクトの種類で使用できる機能」を参照してください。For more information, see Features available by Office application and project type.

Note

カスタム作業ウィンドウは、操作ウィンドウとは異なります。A custom task pane differs from the actions pane. 操作ウィンドウは、Microsoft Office Word および Microsoft Office Excel のドキュメント レベルのカスタマイズの一部です。The actions pane is part of document-level customizations for Microsoft Office Word and Microsoft Office Excel. 詳細については、「操作ウィンドウの概要」を参照してください。For more information, see Actions pane overview.

カスタム作業ウィンドウの利点Benefits of custom task panes

カスタム作業ウィンドウでは、使用する機能を使い慣れたユーザー インターフェイスに取り込むことができます。Custom task panes let you integrate your features into a familiar user interface. Visual Studio のツールを使用して、カスタム作業ウィンドウをすばやく作成できます。You can create a custom task pane quickly by using Visual Studio tools.

使い慣れたユーザーインターフェイスFamiliar user interface

Microsoft Office システムのアプリケーションのユーザーは、Word の [スタイルと書式設定] 作業ウィンドウなどの作業ウィンドウの使用に既に慣れています。Users of applications in the Microsoft Office system are already familiar with using task panes such as the Styles and Formatting task pane in Word. カスタム作業ウィンドウは Microsoft Office システムの他の作業ウィンドウと似た動作をします。Custom task panes behave like other task panes in the Microsoft Office system. ユーザーは、アプリケーション ウィンドウのいずれかの辺にカスタム作業ウィンドウをドッキングすることができます。また、ウィンドウの任意の場所にカスタム作業ウィンドウをドラッグすることができます。Users can dock custom task panes to different sides of the application window, or they can drag custom task panes to any location in the window. 複数のカスタム作業ウィンドウを同時に表示できる VSTO アドインを作成することもできます。各作業ウィンドウは、ユーザーが個別に操作できます。You can create a VSTO Add-in that displays multiple custom task panes at the same time, and users can control each task pane individually.

Windows フォームのサポートWindows forms support

Visual Studio で Office 開発ツールを使用して作成したカスタム作業ウィンドウのユーザー インターフェイスは、Windows フォーム コントロールに基づいています。The user interface of a custom task pane that you create by using the Office development tools in Visual Studio is based on Windows Forms controls. 使い慣れた Windows フォーム デザイナーを使用して、カスタム作業ウィンドウのユーザー インターフェイスを設計できます。You can use the familiar Windows Forms Designer to design the user interface for a custom task pane. また、Windows フォームのデータ バインディング サポートを使用して、作業ウィンドウ上のコントロールにデータ ソースをバインドすることもできます。You can also use the data binding support in Windows Forms to bind a data source to controls on the task pane.

カスタム作業ウィンドウの作成Create a custom task pane

2 つの手順で、基本的なカスタム作業ウィンドウを作成できます。You can create a basic custom task pane in two steps:

  1. Windows フォーム コントロールを UserControl オブジェクトに追加することにより、カスタム作業ウィンドウのユーザー インターフェイスを作成します。Create a user interface for your custom task pane by adding Windows Forms controls to a UserControl object.

  2. そのユーザー コントロールを VSTO アドインの CustomTaskPaneCollection オブジェクトに渡すことにより、カスタム作業ウィンドウをインスタンス化します。Instantiate the custom task pane by passing the user control to the CustomTaskPaneCollection object in your VSTO Add-in. このコレクションは、作業ウィンドウの外観を変更し、ユーザー イベントに応答するために使用できる新しい CustomTaskPane オブジェクトを返します。This collection returns a new CustomTaskPane object that you can use to modify the appearance of the task pane and respond to user events.

    詳細については、「方法 :カスタム作業ウィンドウをアプリケーションに追加します。For more information, see How to: Add a custom task pane to an application.

ユーザー インターフェイスを作成するCreate the user interface

Visual Studio の Office 開発ツールを使用して作成されるすべてのカスタム作業ウィンドウには、UserControl オブジェクトが含まれます。All custom task panes that are created by using the Office development tools in Visual Studio contain a UserControl object. このユーザー コントロールは、カスタム作業ウィンドウのユーザー インターフェイスを提供します。This user control provides the user interface of your custom task pane. デザイン時または実行時に、ユーザー コントロールを作成できます。You can create the user control at design time or at run time. デザイン時にユーザー コントロールを作成する場合は、Windows フォーム デザイナーを使用して、作業ウィンドウのユーザー インターフェイスを作成できます。If you create the user control at design time, you can use the Windows Forms Designer to construct the user interface of your task pane.

カスタム作業ウィンドウのインスタンス化Instantiate the custom task pane

カスタム作業ウィンドウのユーザー インターフェイスが含まれるユーザー コントロールを作成した後に、CustomTaskPane をインスタンス化する必要があります。After you create a user control that contains the user interface of the custom task pane, you have to instantiate a CustomTaskPane. これを実行するには、いずれかの Add メソッドを呼び出すことにより、ユーザー コントロールを VSTO アドインの CustomTaskPaneCollection に渡します。To do this, pass the user control to the CustomTaskPaneCollection in your VSTO Add-in by calling one of the Add methods. このコレクションは、ThisAddIn クラスの CustomTaskPanes フィールドとして公開されます。This collection is exposed as the CustomTaskPanes field of the ThisAddIn class. 次のコード例は ThisAddIn クラスから実行することを意図しています。The following code example is intended to be run from the ThisAddIn class.

myUserControl1 = New MyUserControl
myCustomTaskPane = Me.CustomTaskPanes.Add(myUserControl1, "My Task Pane")
myCustomTaskPane.Visible = True
myUserControl1 = new MyUserControl();
myCustomTaskPane = this.CustomTaskPanes.Add(myUserControl1, "My Task Pane");
myCustomTaskPane.Visible = true;

Add メソッドは、新しい CustomTaskPane オブジェクトを返します。The Add methods return a new CustomTaskPane object. このオブジェクトを使用して、作業ウィンドウの外観を変更したり、ユーザー イベントに応答したりできます。You can use this object to modify the appearance of the task pane and to respond to user events.

複数のウィンドウで作業ウィンドウを制御するControl the task pane in multiple windows

カスタム作業ウィンドウは、ドキュメント フレーム ウィンドウに関連付けられます。ドキュメント フレーム ウィンドウは、ドキュメントや項目をユーザーに表示するものです。Custom task panes are associated with a document frame window, which presents a view of a document or item to the user. 作業ウィンドウは、関連付けられたウィンドウが表示されている場合にのみ表示されます。The task pane is visible only when the associated window is visible.

どのウィンドウが作業ウィンドウを表示するのかを決定するには、作業ウィンドウを作成するときに適切な Add メソッド オーバーロードを使用します。To determine which window displays the custom task pane, use the appropriate Add method overload when you create the task pane:

  • 作業ウィンドウをアクティブなウィンドウに関連付けるには、Add メソッドを使用します。To associate the task pane with the active window, use the Add method.

  • 指定したウィンドウでホストされているドキュメントに作業ウィンドウを関連付けるには、Add メソッドを使用します。To associate the task pane with a document that is hosted by a specified window, use the Add method.

    一部の Office アプリケーションでは、複数のウィンドウが開いているときに作業ウィンドウを作成する、または表示するタイミングについて、明示的な命令が必要です。Some Office applications require explicit instructions for when to create or display your task pane when more than one window is open. その場合、作業ウィンドウがアプリケーションで確実に適切なドキュメントや項目に表示されるようにするために、カスタム作業ウィンドウをコードのどこでインスタンス化するかを検討することが重要になります。This makes it important to consider where to instantiate the custom task pane in your code to ensure that the task pane appears with the appropriate documents or items in the application. 詳細については、「アプリケーションウィンドウでのカスタム作業ウィンドウの管理」を参照してください。For more information, see Manage custom task panes in application windows.

作業ウィンドウからアプリケーションにアクセスするAccess the application from the Task Pane

ユーザー コントロールからアプリケーションを自動化する場合、コード内の Globals.ThisAddIn.Application を使用して、オブジェクト モデルに直接アクセスできます。If you want to automate the application from the user control, you can directly access the object model by using Globals.ThisAddIn.Application in your code. 静的な Globals クラスは、ThisAddIn オブジェクトへのアクセスを提供します。The static Globals class provides access to the ThisAddIn object. このオブジェクトの Application フィールドは、アプリケーションのオブジェクト モデルへのエントリ ポイントです。The Application field of this object is the entry point into the object model of the application.

オブジェクトのフィールドApplicationの詳細については、「プログラム VSTO アドイン」を参照してください。 ThisAddInカスタム作業ウィンドウからアプリケーションを自動化する方法を示すチュートリアルについては、 「チュートリアル:カスタム作業ウィンドウからのアプリケーションの自動適用。For more information about the Application field of the ThisAddIn object, see Program VSTO Add-ins. For a walkthrough that demonstrates how to automate an application from a custom task pane, see Walkthrough: Automatic an application from a custom task pane. クラスのGlobals詳細については、「 Office プロジェクト内のオブジェクトへのグローバルアクセス」を参照してください。For more information about the Globals class, see Global access to objects in Office projects.

作業ウィンドウのユーザーインターフェイスの管理Manage the user interface of the Task Pane

作業ウィンドウを作成した後に、CustomTaskPane オブジェクトのプロパティとイベントを使用して、作業ウィンドウのユーザー インターフェイスを制御したり、ユーザーが作業ウィンドウを変更したときに対応したりすることができます。After you create the task pane, you can use properties and events of the CustomTaskPane object to control the user interface of the task pane and to respond when the user changes the task pane.

カスタム作業ウィンドウを表示するMake the custom Task Pane visible

既定では、作業ウィンドウは表示されません。By default, the task pane is not visible. 作業ウィンドウが表示されるようにするにはVisible 、プロパティをtrueに設定する必要があります。To make the task pane visible, you must set the Visible property to true.

ユーザーは、作業ウィンドウの隅にある [閉じる] ボタン (X) をクリックすることで、いつでも作業ウィンドウを閉じることができます。Users can close a task pane at any time by clicking the Close button (X) in the corner of the task pane. ただし、ユーザーがもう一度、カスタム作業ウィンドウを開くための既定の方法はありません。However, there is no default way for users to open the custom task pane again. ユーザーがカスタム作業ウィンドウを閉じた場合、それを表示する方法を提供しない限り、そのユーザーはカスタム作業ウィンドウを再度表示することはできません。If a user closes a custom task pane, that user cannot view the custom task pane again unless you provide a way to display it.

VSTO アドインでカスタム作業ウィンドウを作成する場合は、ユーザーがクリックしてカスタム作業ウィンドウを表示したり非表示にできる UI 要素 (ボタンなど) も作成する必要があります。If you create a custom task pane in your VSTO Add-in, you should also create a UI element, such as a button, that users can click to display or hide your custom task pane. リボンのカスタマイズをサポートする Microsoft Office アプリケーションでカスタム作業ウィンドウを作成する場合は、カスタム作業ウィンドウを表示したり非表示にしたりするボタンを持つコントロール グループをリボンに追加できます。If you create a custom task pane in a Microsoft Office application that supports customizing the Ribbon, you can add a control group to the Ribbon with a button that displays or hides your custom task pane. これを行う方法を示すチュートリアルについては、「チュートリアル:カスタム作業ウィンドウをリボンボタンと同期します。For a walkthrough that demonstrates how to do this, see Walkthrough: Synchronize a custom task pane with a Ribbon button.

リボンのカスタマイズをサポートしない Microsoft Office アプリケーションでカスタム作業ウィンドウを作成する場合は、カスタム作業ウィンドウを表示または非表示にする Microsoft.Office.Core.CommandBarButton を追加できます。If you create a custom task pane in a Microsoft Office application that does not support customizing the Ribbon, you can add a Microsoft.Office.Core.CommandBarButton that displays or hides your custom task pane.

作業ウィンドウの外観を変更するModify the appearance of the task pane

CustomTaskPane オブジェクトのプロパティを使用して、カスタム作業ウィンドウの位置とサイズを制御できます。You can control the size and location of a custom task pane by using properties of the CustomTaskPane object. カスタム作業ウィンドウに含まれている UserControl オブジェクトのプロパティを使用して、カスタム作業ウィンドウの外観に、他の多くの変更を行うことができます。You can make many other changes to the appearance of a custom task pane by using properties of the UserControl object that is contained in the custom task pane. たとえば、ユーザー コントロールの BackgroundImage プロパティを使用して、カスタム作業ウィンドウの背景画像を指定できます。For example, you can specify a background image for a custom task pane by using the BackgroundImage property of the user control.

次の表に、CustomTaskPane プロパティを使用してカスタム作業ウィンドウに加えることができる変更をリストします。The following table lists the changes you can make to a custom task pane by using CustomTaskPane properties.

タスクTask プロパティProperty
作業ウィンドウのサイズを変更するTo change the size of the task pane Height

Width
作業ウィンドウの場所を変更するにはTo change the location of the task pane DockPosition
作業ウィンドウを非表示にする、または表示されるようにするにはTo hide the task pane or make it visible Visible
ユーザーが作業ウィンドウの場所を変更できないようにするにはTo prevent the user from changing the location of the task pane DockPositionRestrict

プログラムのカスタム作業ウィンドウイベントProgram custom task pane events

ユーザーがカスタム作業ウィンドウを変更するときに、VSTO アドインが応答するようにしたい場合があります。You might want your VSTO Add-in to respond when the user modifies the custom task pane. たとえば、ユーザーがウィンドウの向きを縦方向から横方向に変更した場合にコントロールの位置を変更するという局面が考えられます。For example, if the user changes the orientation of the pane from vertical to horizontal, you might want to reposition the controls.

次の表に、ユーザーがカスタム作業ウィンドウに加える変更に応答するために利用できるイベントを示します。The following table lists the events that you can handle to respond to changes that the user makes to the custom task pane.

タスクTask eventEvent
ユーザーが作業ウィンドウの場所を変更したときに応答するにはTo respond when the user changes the location of the task pane. DockPositionChanged
ユーザーが作業ウィンドウを非表示にしたり、表示させた場合に応答するにはTo respond when the user hides the task pane or makes it visible. VisibleChanged

作業ウィンドウで使用されるリソースをクリーンアップするClean up resources used by the task pane

カスタム作業ウィンドウを作成した後、CustomTaskPane オブジェクトは VSTO アドインが実行されている限りメモリに残ります。After you create a custom task pane, the CustomTaskPane object remains in memory as long as your VSTO Add-in is running. ユーザーが作業ウィンドウの隅にある [閉じる] ボタン (X) をクリックしても、オブジェクトはメモリに残ります。The object remains in memory even after the user clicks the Close button (X) in the corner of the task pane.

VSTO アドインがまだ実行している間に、作業ウィンドウで使用されたリソースをクリーンアップするには、Remove または RemoveAt メソッドを使用します。To clean up resources used by the task pane while the VSTO Add-in is still running, use the Remove or RemoveAt methods. これらのメソッドは、指定された CustomTaskPane オブジェクトを CustomTaskPanes コレクションから削除し、オブジェクトの Dispose メソッドを呼び出します。These methods remove the specified CustomTaskPane object from the CustomTaskPanes collection, and they call the Dispose method of the object.

Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime は VSTO アドインがアンロードされるときに、カスタム作業ウィンドウで使用されたリソースを自動的にクリーンアップします。The Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime automatically cleans up resources used by the custom task pane when the VSTO Add-in is unloaded. プロジェクトのThisAddIn_Shutdownイベントハンドラー RemoveRemoveAtメソッドまたはメソッドを呼び出さないでください。Do not call the Remove or RemoveAt methods in the ThisAddIn_Shutdown event handler in your project. Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime は、ThisAddIn_Shutdown が呼び出される前に、CustomTaskPane で使用されているリソースをクリーンアップするため、これらのメソッドにより ObjectDisposedException がスローされます。These methods will throw an ObjectDisposedException, because the Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime cleans up resources used by the CustomTaskPane object before ThisAddIn_Shutdown is called. の詳細ThisAddIn_Shutdownについては、「 Office プロジェクトのイベント」を参照してください。For more information about ThisAddIn_Shutdown, see Events in Office projects.

複数のアプリケーションウィンドウでカスタム作業ウィンドウを管理するManage custom task panes in multiple application windows

複数のウィンドウを使用してドキュメントやその他の項目を表示するアプリケーションでカスタム作業ウィンドウを作成する場合、その作業ウィンドウをユーザーが必要とするときに確実に表示させるには、追加の手順を実行する必要があります。When you create a custom task pane in an application that uses multiple windows to display documents and other items, you need to take extra steps to ensure that the task pane is visible when the user expects it to be.

すべてのアプリケーションのカスタム作業ウィンドウは、ドキュメント フレーム ウィンドウと関連付けられます。このウィンドウは、ドキュメントや項目のビューをユーザーに表示します。Custom task panes in all applications are associated with a document frame window, which presents a view of a document or item to the user. 作業ウィンドウは、関連付けられたウィンドウが表示されている場合にのみ表示されます。The task pane is visible only when the associated window is visible. ただし、すべてのアプリケーションでドキュメント フレーム ウィンドウが同じ方法で使用されるわけではありません。However, not all applications use document frame windows the same way.

次のアプリケーション グループには別の開発要件があります。The following application groups have different development requirements:

OutlookOutlook

Outlook 用のカスタム作業ウィンドウを作成するときには、カスタム作業ウィンドウが特定のエクスプローラーまたはインスペクター ウィンドウに関連付けられます。When you create a custom task pane for Outlook, the custom task pane is associated with a specific Explorer or Inspector window. エクスプローラーはフォルダーの内容を表示するウィンドウで、インスペクターとは、電子メールメッセージやタスクなどの項目を表示するウィンドウです。Explorers are windows that display the contents of a folder, and Inspectors are windows that display an item such as an email message or a task.

複数のエクスプ ローラーやインスペクターのウィンドウでカスタム作業ウィンドウを表示する場合は、エクスプ ローラーまたはインスペクター ウィンドウが開いたときに、カスタム作業ウィンドウの新しいインスタンスを作成する必要があります。If you want to display a custom task pane with multiple Explorer or Inspector windows, you need to create a new instance of the custom task pane when an Explorer or Inspector window opens. そのためには、エクスプ ローラーまたはインスペクター ウィンドウが作成されるときに発生するイベントを処理し、次に、イベント ハンドラーで作業ウィンドウを作成します。To do this, handle an event that is raised when an Explorer or Inspector window is created, and then create the task pane in the event handler. どのウィンドウを表示させるかに応じて、作業ウィンドウを非表示にしたり表示させたりするように、エクスプ ローラーおよびインスペクターのイベントを処理することもできます。You can also handle Explorer and Inspector events to hide or display task panes depending on which window is visible.

作業ウィンドウを特定のエクスプローラーまたはインスペクターに関連付けるには、 Addメソッドを使用して作業ウィンドウを作成しMicrosoft.Office.Interop.Outlook.ExplorerMicrosoft.Office.Interop.Outlook.Inspectorオブジェクトまたはオブジェクトをウィンドウパラメーターに渡します。To associate the task pane with a specific Explorer or Inspector, use the Add method to create the task pane, and pass the Microsoft.Office.Interop.Outlook.Explorer or Microsoft.Office.Interop.Outlook.Inspector object to the window parameter. カスタム作業ウィンドウの作成の詳細については、「カスタム作業ウィンドウの概要」を参照してください。For more information about creating custom task panes, see Custom task panes overview.

Outlook でカスタム作業ウィンドウの複数のインスタンスを禁止するPrevent multiple instances of a custom task pane in Outlook

Outlook のウィンドウでカスタム作業ウィンドウの複数のインスタンスが表示されないようにするには、各ウィンドウが閉じられるときに ThisAddIn クラスの CustomTaskPanes コレクションからカスタム作業ウィンドウを明示的に削除します。To prevent Outlook windows from displaying multiple instances of a custom task pane, explicitly remove the custom task pane from the CustomTaskPanes collection of the ThisAddIn class when each window is closed. ウィンドウが閉じられるときに発生するイベント (CloseClose など) で Remove メソッドを呼び出します。Call the Remove method in an event that is raised when a window is closed, such as Close or Close.

カスタム作業ウィンドウを明示的に削除しない場合は、Outlook のウィンドウで、カスタム作業ウィンドウの複数のインスタンスが表示される可能性があります。If you do not explicitly remove the custom task pane, Outlook windows might display multiple instances of the custom task pane. Outlook ではウィンドウが再利用されることがありますが、再利用されるウィンドウにアタッチされたカスタム作業ウィンドウがあった場合、その作業ウィンドウへの参照は再利用されるウィンドウに残ります。Outlook sometimes recycles windows, and recycled windows retain references to any custom task panes that were attached to them.

Word、InfoPath、PowerPointWord, InfoPath, and PowerPoint

Word、InfoPath、および PowerPoint ではそれぞれのドキュメントが別々のドキュメント フレーム ウィンドウに表示されます。Word, InfoPath, and PowerPoint display each document in a different document frame window. これらのアプリケーションのカスタム作業ウィンドウを作成する場合、そのカスタム作業ウィンドウは特定のドキュメントにのみ関連付けられます。When you create a custom task pane for these applications, the custom task pane is associated only with a specific document. ユーザーが別のドキュメントを開いた場合、前のドキュメントが再度表示されるまで、カスタム作業ウィンドウは非表示です。If the user opens a different document, the custom task pane is hidden until the earlier document is visible again.

複数のドキュメントでカスタム作業ウィンドウを表示する場合は、ユーザーが新しいドキュメントを作成するか、既存のドキュメントを開くときに、カスタム作業ウィンドウの新しいインスタンスを作成します。If you want to display a custom task pane with multiple documents, create a new instance of the custom task pane when the user creates a new document or opens an existing document. そのためには、ドキュメントが作成または開かれるときに発生するイベントを処理し、次にイベント ハンドラーで作業ウィンドウを作成します。To do this, handle events that are raised when a document is created or opened, and then create the task pane in the event handlers. どのドキュメントを表示させるかに応じて作業ウィンドウを非表示にしたり表示させたりするように、ドキュメント イベントを処理することもできます。You can also handle document events to hide or display task panes depending on which document is visible.

作業ウィンドウを特定のドキュメントウィンドウに関連付けるには、 Addメソッドを使用して作業ウィンドウを作成し、(Word Microsoft.Office.Interop.InfoPath.WindowObjectの場合)、(InfoPath の場合)、またはdocumentwindow (PowerPoint の場合) をウィンドウパラメーターにWindow渡します.To associate the task pane with a specific document window, use the Add method to create the task pane, and pass a Window (for Word), Microsoft.Office.Interop.InfoPath.WindowObject (for InfoPath), or DocumentWindow (for PowerPoint) to the window parameter.

Word イベントWord events

Word のドキュメント ウィンドウの状態を監視するために、次のイベントを処理できます。To monitor the state of document windows in Word, you can handle the following events:

InfoPath イベントInfoPath events

InfoPath のドキュメント ウィンドウの状態を監視するために、次のイベントを処理できます。To monitor the state of document windows in InfoPath, you can handle the following events:

PowerPoint イベントPowerPoint events

PowerPoint のドキュメント ウィンドウの状態を監視するために、次のイベントを処理できます。To monitor the state of document windows in PowerPoint, you can handle the following events:

関連項目See also