オプション ページを作成します。Creating an Options Page

このチュートリアルでは、プロパティ グリッドを使用して確認し、プロパティを設定する単純なツール/オプション ページを作成します。This walkthrough creates a simple Tools/Options page that uses a property grid to examine and set properties.

これらのプロパティを保存して、設定ファイルからの復元、以下の手順としを参照してください、設定のカテゴリを作成するです。To save these properties to and restore them from a settings file, follow these steps, and then see Creating a Settings Category.

MPF ツール オプション ページを作成するために 2 つのクラスを提供する、PackageクラスおよびDialogPageクラスです。The MPF provides two classes to help you create Tools Options pages, the Package class and the DialogPage class. パッケージ クラスをサブクラス化して、これらのページのコンテナーを提供する VSPackage を作成します。You create a VSPackage to provide a container for these pages by subclassing the Package class. 各ツール オプション ページを作成するには、DialogPage クラスから派生します。You create each tools options page by deriving from the DialogPage class.

必須コンポーネントPrerequisites

Visual Studio 2015 以降、ダウンロード センターから Visual Studio SDK をインストールすることはできません。Starting in Visual Studio 2015, you do not install the Visual Studio SDK from the download center. これは Visual Studio のセットアップにオプション機能として含まれるようになりました。It is included as an optional feature in Visual Studio setup. また、後から VS SDK をインストールすることもできます。You can also install the VS SDK later on. より詳細な情報については 、Visual Studio SDK のインストール に関する記事を参照してください。For more information, see Installing the Visual Studio SDK.

ツール オプションのグリッド ページを作成します。Creating a Tools Options Grid Page

このセクションでは、単純なツールのオプションのプロパティ グリッドを作成します。In this section, you create a simple Tools Options property grid. このグリッドを使用して、表示し、プロパティの値を変更します。You use this grid to display and change the value of a property.

VSIX プロジェクトを作成し、VSPackage を追加するにはTo create the VSIX project and add a VSPackage

  1. すべての Visual Studio 拡張機能は、資産を拡張機能を含んでいる VSIX 配置プロジェクトを開始します。Every Visual Studio extension starts with a VSIX deployment project which will contain the extension assets. 作成、Visual StudioVisual Studioという名前の VSIX プロジェクトMyToolsOptionsExtensionです。Create a Visual StudioVisual Studio VSIX project named MyToolsOptionsExtension. VSIX プロジェクトのテンプレートを見つけることができます、新しいプロジェクト] ダイアログ ボックス [ Visual c#/機能拡張です。You can find the VSIX project template in the New Project dialog under Visual C# / Extensibility.

  2. という名前の Visual Studio パッケージ項目テンプレートを追加することで、VSPackage を追加MyToolsOptionsPackageです。Add a VSPackage by adding a Visual Studio Package item template named MyToolsOptionsPackage. ソリューション エクスプ ローラープロジェクト ノードを右クリックし、選択、追加/新しい項目のします。In the Solution Explorer, right-click the project node and select Add / New Item. 新しい項目の追加 ダイアログに進み、 Visual c# アイテム/機能拡張選択とVisual Studio パッケージです。In the Add New Item dialog, go to Visual C# Items / Extensibility and select Visual Studio Package. 名前ダイアログの下部にあるフィールドに、ファイル名に変更MyToolsOptionsPackage.csです。In the Name field at the bottom of the dialog, change the file name to MyToolsOptionsPackage.cs. VSPackage を作成する方法の詳細については、次を参照してください。 VSPackage で拡張機能を作成するです。For more information about how to create a VSPackage, see Creating an Extension with a VSPackage.

ツール オプションのプロパティ グリッドを作成するにはTo create the Tools Options property grid

  1. MyToolsOptionsPackage ファイル、コード エディターで開きます。Open the MyToolsOptionsPackage file in the code editor.

  2. 次の追加ステートメントを使用します。Add the following using statement.

    using System.ComponentModel;  
    
  3. OptionPageGrid クラスを宣言してから派生DialogPageです。Declare an OptionPageGrid class and derive it from DialogPage.

    public class OptionPageGrid : DialogPage  
    {  }  
    
  4. 適用、 ProvideOptionPageAttribute VSPackage クラス オプションのカテゴリと、OptionPageGrid のオプションのページ名をクラスに割り当てるためにします。Apply a ProvideOptionPageAttribute to the VSPackage class to assign to the class an options category and options page name for the OptionPageGrid. 結果は、次のようになります。The result should look like this:

    [PackageRegistration(UseManagedResourcesOnly = true)]  
    [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)]  
    [ProvideMenuResource("Menus.ctmenu", 1)]  
    [Guid(GuidList.guidMyToolsOptionsPkgString)]  
    [ProvideOptionPage(typeof(OptionPageGrid),  
        "My Category", "My Grid Page", 0, 0, true)]  
    public sealed class MyToolsOptionsPackage : Package  
    
  5. 追加、OptionIntegerプロパティをOptionPageGridクラスです。Add an OptionInteger property to the OptionPageGrid class.

    public class OptionPageGrid : DialogPage  
    {  
        private int optionInt = 256;  
    
        [Category("My Category")]  
        [DisplayName("My Integer Option")]  
        [Description("My integer option")]  
        public int OptionInteger  
        {  
            get { return optionInt; }  
            set { optionInt = value; }  
        }  
    }  
    

    注意

    既定の実装DialogPage適切なコンバーターがあるか、構造体や配列を適切なコンバーターのプロパティを展開するプロパティをサポートします。The default implementation of DialogPage supports properties that have appropriate converters or that are structures or arrays that can be expanded into properties that have appropriate converters. コンバーターの一覧は、次を参照してください。、System.ComponentModel名前空間。For a list of converters, see the System.ComponentModel namespace.

  6. プロジェクトをビルドし、デバッグを開始します。Build the project and start debugging.

  7. Visual Studio の実験用インスタンスで、ツールボタンをクリックしオプションです。In the experimental instance of Visual Studio, on the Tools menu click Options.

    左側のウィンドウで表示されるはずマイ カテゴリです。In the left pane you should see My Category. (オプションのカテゴリが表示されます、アルファベット順に表示されるはずの途中で、一覧に表示するようにします。)開いているマイ カテゴリ をクリックし、個人用のグリッド ページです。右側のウィンドウで、オプションのグリッドが表示されます。(Options categories are listed in alphabetical order, so it should appear about halfway down the list.) Open My Category and then click My Grid Page.The options grid appears in the right pane. プロパティのカテゴリはMy Options、プロパティの名前とマイ整数オプションです。The property category is My Options, and the property name is My Integer Option. プロパティの説明、 My 整数オプションウィンドウの下部に表示されます。The property description, My integer option, appears at the bottom of the pane. 別のものを 256 の初期値から値を変更します。Change the value from its initial value of 256 to something else. をクリックしてOKを閉じてから開き個人用のグリッド ページです。Click OK, and then reopen My Grid Page. 新しい値が引き続き発生することを確認できます。You can see that the new value persists.

    オプション ページも Visual Studio の クイック起動で使用できます。Your options page is also available through Visual Studio's Quick Launch. IDE の右上隅の [クイック起動] ウィンドウで次のように入力します。マイ カテゴリと表示されますマイ カテゴリには個人用のグリッド ページ]-> [ 、ドロップダウン リストに表示します。In the Quick Launch window in the upper right corner of the IDE, type My Category and you will see My Category -> My Grid Page listed in the dropdown.

ツール オプションのカスタムの作成 ページCreating a Tools Options Custom Page

このセクションでは、カスタム UI を使用したツール オプション ページを作成します。In this section, you create a Tools Options page with a custom UI. このページを使用して、表示し、プロパティの値を変更します。You use this page to display and change the value of a property.

  1. MyToolsOptionsPackage ファイル、コード エディターで開きます。Open the MyToolsOptionsPackage file in the code editor.

  2. 次の追加ステートメントを使用します。Add the following using statement.

    using System.Windows.Forms;  
    
  3. 追加、OptionPageCustomクラス、直前に、OptionPageGridクラスです。Add an OptionPageCustom class, just before the OptionPageGrid class. 新しいクラスを派生DialogPageです。Derive the new class from DialogPage.

    public class OptionPageCustom : DialogPage  
    {  
        private string optionValue = "alpha";  
    
        public string OptionString  
        {  
            get { return optionValue; }  
            set { optionValue = value; }  
        }  
    }  
    
  4. GUID 属性を追加します。Add a GUID attribute. なければプロパティを追加します。Add an OptionString property:

    [Guid("00000000-0000-0000-0000-000000000000")]  
    public class OptionPageCustom : DialogPage  
    {  
        private string optionValue = "alpha";  
    
        public string OptionString  
        {  
            get { return optionValue; }  
            set { optionValue = value; }  
        }  
    }  
    
  5. 1 秒あたりの適用ProvideOptionPageAttributeVSPackage クラスにします。Apply a second ProvideOptionPageAttribute to the VSPackage class. この属性は、オプションのカテゴリとオプションのページ名、クラスを割り当てます。This attribute assigns the class an options category and options page name.

    [PackageRegistration(UseManagedResourcesOnly = true)]  
    [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)]  
    [ProvideMenuResource("Menus.ctmenu", 1)]  
    [Guid(GuidList.guidMyToolsOptionsPkgString)]  
    [ProvideOptionPage(typeof(OptionPageGrid),  
        "My Category", "My Grid Page", 0, 0, true)]  
    [ProvideOptionPage(typeof(OptionPageCustom),  
        "My Category", "My Custom Page", 0, 0, true)]  
    public sealed class MyToolsOptionsPackage : Package  
    
  6. 新しいユーザー コントロールMyUserControl をプロジェクトにという名前です。Add a new User Control named MyUserControl to the project.

  7. 追加、 TextBoxコントロールをユーザー コントロールです。Add a TextBox control to the user control.

    プロパティウィンドウ、ツールバーで、をクリックして、イベントボタンをクリックし、ダブルクリック、のままにしてイベント。In the Properties window, on the toolbar, click the Events button, and then double-click the Leave event. MyUserControl.cs コードに、新しいイベント ハンドラーが表示されます。The new event handler appears in the MyUserControl.cs code.

  8. 追加パブリックOptionsPageフィールド、Initializeコントロール クラス、およびオプションの設定に、イベント ハンドラーの値、テキスト ボックスの内容を更新する方法。Add a public OptionsPage field, an Initialize method to the control class, and update the event handler to set the option value to the contents of the text box:

    public partial class MyUserControl : UserControl  
    {  
        public MyUserControl()  
        {  
            InitializeComponent();  
        }  
    
        internal OptionPageCustom optionsPage;  
    
        public void Initialize()  
        {  
            textBox1.Text = optionsPage.OptionString;  
        }  
    
        private void textBox1_Leave(object sender, EventArgs e)  
        {  
            optionsPage.OptionString = textBox1.Text;  
        }  
    }  
    

    optionsPageフィールドは、親への参照を保持OptionPageCustomインスタンス。The optionsPage field holds a reference to the parent OptionPageCustom instance. Initializeメソッドが表示されますOptionStringで、 TextBoxです。The Initialize method displays OptionString in the TextBox. イベント ハンドラーの現在の値を書き込みます、 テキスト ボックスOptionStringリーフを集中すると、 テキスト ボックスです。The event handler writes the current value of the TextBox to the OptionString when focus leaves the TextBox.

  9. パッケージのコード ファイル内の上書きを追加、OptionPageCustom.Windowプロパティを作成、初期化、およびのインスタンスを返す OptionPageCustom クラスをMyUserControlです。In the package code file, add an override for the OptionPageCustom.Window property to the OptionPageCustom class to create, initialize, and return an instance of MyUserControl. クラスは、次のようになります。The class should now look like this:

    [Guid("00000000-0000-0000-0000-000000000000")]  
    public class OptionPageCustom : DialogPage  
    {  
        private string optionValue = "alpha";  
    
        public string OptionString  
        {  
            get { return optionValue; }  
            set { optionValue = value; }  
        }  
    
        protected override IWin32Window Window  
        {  
            get  
            {  
                MyUserControl page = new MyUserControl();  
                page.optionsPage = this;  
                page.Initialize();  
                return page;  
            }  
        }  
    }  
    
  10. プロジェクトをビルドして実行します。Build and run the project.

  11. 実験用インスタンスのをクリックしてツール/オプションです。In the experimental instance, click Tools / Options.

  12. 検索My カテゴリMy Custom ページです。Find My Category and then My Custom Page.

  13. 値を変更なければです。Change the value of OptionString. をクリックしてOKを閉じてから開きマイ カスタム ページです。Click OK, and then reopen My Custom Page. 新しい値が保存されることを確認できます。You can see that the new value has persisted.

オプションにアクセスします。Accessing Options

このセクションでは、関連付けられたツール オプション ページをホストする VSPackage からオプションの値を取得します。In this section, you get the value of an option from the VSPackage that hosts the associated Tools Options page. 任意のパブリック プロパティの値を取得すると同じ手法を使用できます。The same technique can be used to obtain the value of any public property.

  1. パッケージのコード ファイルでというパブリック プロパティを追加OptionIntegerMyToolsOptionsPackageクラスです。In the package code file, add a public property called OptionInteger to the MyToolsOptionsPackage class.

    public int OptionInteger  
    {  
        get  
        {  
            OptionPageGrid page = (OptionPageGrid)GetDialogPage(typeof(OptionPageGrid));  
            return page.OptionInteger;  
        }  
    }  
    

    このコードを呼び出すGetDialogPage作成または取得する、OptionPageGridインスタンス。This code calls GetDialogPage to create or retrieve an OptionPageGrid instance. OptionPageGrid 呼び出しLoadSettingsFromStorageオプションでは、パブリック プロパティを読み込めません。OptionPageGrid calls LoadSettingsFromStorage to load its options, which are public properties.

  2. という名前のカスタム コマンド項目テンプレートを追加するようになりましたMyToolsOptionsCommand値を表示します。Now add a custom command item template named MyToolsOptionsCommand to display the value. 新しい項目の追加ダイアログ ボックスに移動してVisual c#/機能拡張選択とにカスタム コマンドです。In the Add New Item dialog, go to Visual C# / Extensibility and select Custom Command. 名前ウィンドウの下部にあるフィールドに、コマンド ファイルの名前を変更するMyToolsOptionsCommand.csです。In the Name field at the bottom of the window, change the command file name to MyToolsOptionsCommand.cs.

  3. MyToolsOptionsCommand ファイル内のコマンドの本文を置換ShowMessageBoxを次のメソッド。In the MyToolsOptionsCommand file, replace the body of the command's ShowMessageBox method with the following:

    private void ShowMessageBox(object sender, EventArgs e)  
    {  
        MyToolsOptionsPackage myToolsOptionsPackage = this.package as MyToolsOptionsPackage;  
        System.Windows.Forms.MessageBox.Show(string.Format(CultureInfo.CurrentCulture, "OptionInteger: {0}", myToolsOptionsPackage.OptionInteger));  
    }  
    
  4. プロジェクトをビルドし、デバッグを開始します。Build the project and start debugging.

  5. 実験用インスタンスの上、ツール メニューのをクリックして呼び出す MyToolsOptionsCommandです。In the experimental instance, on the Tools menu, click Invoke MyToolsOptionsCommand.

    メッセージ ボックスには、現在の値が表示されます。OptionIntegerです。A message box displays the current value of OptionInteger.

関連項目See Also

オプションとオプション ページOptions and Options Pages