カスタム エディターとデザイナーを作成する

Visual Studio 統合開発環境 (IDE) では、さまざまな種類のエディターをホストできます。

  • Visual Studio のコア エディター

  • カスタム エディター

  • 外部エディター

  • デザイナー

次の情報は、必要なエディターの種類を選択する場合に役立ちます。

エディターの種類

Visual Studio のコア エディターの詳細については、「エディターと言語サービスを拡張する」をご覧ください。

カスタム エディター

カスタム エディターとは、特殊な環境で動作するように設計されたものです。 たとえば、Microsoft Exchange サーバー などの特定のリポジトリに対してデータの読み取りや書き込みを行う機能を持つエディターを作成できます。 プロジェクト タイプのみを扱うエディターが必要な場合、または特定のいくつかのコマンドのみを含むエディターが必要な場合は、カスタム エディターを選択してください。 ただし、ユーザーはカスタム エディターを使用して標準の Visual Studio プロジェクトを編集できないので注意してください。

カスタム エディターでは、エディターファクトリを使用して、エディターに関する情報をレジストリに追加できます。 ただし、カスタム エディターに関連付けられているプロジェクト タイプでは、他の方法でカスタム エディターをインスタンス化できます。

カスタム エディターでは、インプレース アクティブ化または簡略化された埋め込みを使用して、ビューを実装できます。

外部エディター

外部エディターとは、Microsoft Word、メモ帳、Microsoft FrontPage など、Visual Studio に組み込まれていないエディターです。 たとえば、VSPackage からテキストを渡す場合に、このようなエディターを呼び出すことができます。 外部エディターは、それ自体を登録しておくと、Visual Studio の外部で使用できます。 外部エディターを呼び出し、それをホスト ウィンドウに埋め込むことができる場合は、IDE のウィンドウに表示されます。 そうでない場合、IDE によってそれに代わる別のウィンドウが作成されます。

IsDocumentInProject メソッドでは、VSDOCUMENTPRIORITY 列挙型を使用してドキュメントの優先度を設定します。 DP_External 値を指定した場合は、外部エディターでファイルを開くことができます。

エディターの設計上の決定事項

設計に関する次の質問は、お客様のアプリケーションに最適なエディターの種類を選択する場合に役立ちます。

  • お客様のアプリケーションのデータはファイルに保存されますか、それともされませんか? そのデータがファイルに保存される場合、それらはカスタム形式ですか、それとも標準形式ですか?

    標準のファイル形式を使用する場合は、お客様のプロジェクトに加えて他のプロジェクト タイプでも、ファイルを開いたり、データの読み取り/書き込みを行ったりすることができます。 一方、カスタムのファイル形式を使用する場合は、お客様のプロジェクト タイプでのみ、ファイルを開いたり、データの読み取り/書き込みを行ったりすることができます。

    プロジェクトでファイルを使用する場合は、標準のエディターをカスタマイズする必要があります。 プロジェクトでファイルではなく、データベースまたは他のリポジトリ内の項目を使用する場合は、カスタム エディターを作成する必要があります。

  • お使いのエディターで ActiveX コントロールをホストする必要がありますか?

    エディターで ActiveX コントロールをホストする場合は、インプレース アクティブ化に関するページで説明されているように、インプレース アクティブ化エディターを実装します。 ActiveX コントロールをホストしない場合は、簡略化された埋め込みエディターを使用するか、Visual Studio の既定のエディターをカスタマイズします。

  • お使いのエディターで複数のビューをサポートしますか? お使いのエディターのビューを既定のエディターと同時に表示する場合は、複数のビューをサポートする必要があります。

    お使いのエディターで複数のビューをサポートする必要がある場合は、エディターのドキュメント データ オブジェクトとドキュメント ビューオブジェクトを別々のオブジェクトにする必要があります。 詳細については、「複数のドキュメント ビューのサポート」をご覧ください。

    お使いのエディターで複数のビューをサポートする場合、ドキュメント データ オブジェクトに Visual Studio コア エディターのテキスト バッファー実装 (VsTextBuffer オブジェクト) を使用する予定ですか? つまり、Visual Studio コア エディターとのエディター ビューの side-by-side 実行をサポートしますか? これを行う機能は、フォーム デザイナーの原点です。

  • 外部エディターをホストする必要がある場合は、そのエディターを Visual Studio の内部に埋め込むことができますか?

    それを埋め込むことができる場合は、外部エディター用のホスト ウィンドウを作成した後、IsDocumentInProject メソッドを呼び出して、VSDOCUMENTPRIORITY 列挙型値を DP_External に設定する必要があり ます。 エディターを埋め込むことができない場合は、IDE によってそれに代わる別のウィンドウが自動的に作成されます。

このセクションの内容

チュートリアル: カスタム エディターを作成する
カスタム エディターを作成する方法について説明します。

チュートリアル: カスタム エディターに機能を追加する
カスタム エディターに機能を追加する方法について説明します。

デザイナーの初期化とメタデータの構成
デザイナーを初期化する方法について説明します。

デザイナー向けの元に戻す操作のサポートを提供する
デザイナー向けの元に戻す操作を提供する方法について説明します。

カスタム エディターでの構文の色分け表示
コア エディターとカスタム エディターでの構文の色分け表示の違いについて説明します。

カスタム エディターでのドキュメント データとドキュメント ビュー
カスタム エディターでドキュメント データとドキュメント ビューを実装する方法について説明します。