オプション ページを作成します。Create 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 Create 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 を作成する、Packageクラス。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 Install the Visual Studio SDK.

ツール オプションのグリッド ページを作成します。Create 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# > Extensibilityします。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 Create 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. 適用するProvideOptionPageAttributeVSPackageオプションのカテゴリと、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; }  
        }  
    }  
    

    Note

    既定の実装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.

    左側のウィンドウに表示されますMy Categoryします。In the left pane you should see My Category. (オプションのカテゴリが一覧に表示をアルファベット順に一覧の下半分について表示します。)開いている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. プロパティの説明、マイ整数オプションウィンドウの下部に表示されます。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 の右上隅の [クイック起動] ウィンドウで次のように入力します。 My CategoryとわかりますMy Category に個人用のグリッド ページ]-> [ ドロップダウンに表示します。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.

カスタム ツール オプション ページを作成します。Create 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. 2 つ目の適用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. 検索マイ カテゴリ、カスタム ページします。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.

アクセス オプションAccess 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