Поделиться через


Создание страницы параметров

В этом пошаговом руководстве создается простая страница "Сервис и параметры", которая использует сетку свойств для проверки и задания свойств.

Чтобы сохранить эти свойства и восстановить их из файла параметров, выполните следующие действия, а затем см. раздел "Создание категории параметров".

MPF предоставляет два класса, помогающие создавать страницы параметров инструментов, Package класс и DialogPage класс. Вы создаете VSPackage для предоставления контейнера для этих страниц путем подкласса Package класса. Вы создаете каждую страницу параметров инструментов, исходя из DialogPage класса.

Создание страницы сетки параметров инструментов

В этом разделе описано, как создать простую сетку свойств "Параметры инструментов". Эта сетка используется для отображения и изменения значения свойства.

Создание проекта VSIX и добавление VSPackage

  1. Каждое расширение Visual Studio начинается с проекта развертывания VSIX, который будет содержать ресурсы расширения. Создайте проект VISUAL Studio VSIX с именем MyToolsOptionsExtension. Шаблон проекта VSIX можно найти в диалоговом окне "Новый проект ", выполнив поиск vsix.

  2. Добавьте VSPackage, добавив шаблон элемента пакета Visual Studio с именем MyToolsOptionsPackage. Щелкните правой кнопкой мыши узел проекта в Обозревателе решений, а затем выберите Добавить>Новый элемент. В диалоговом окне "Добавление нового элемента" перейдите к расширяемости элементов>Visual C# и выберите пакет Visual Studio. В поле "Имя" в нижней части диалогового окна измените имя MyToolsOptionsPackage.csфайла на . Дополнительные сведения о создании VSPackage см. в статье "Создание расширения с помощью VSPackage".

Создание сетки свойств "Параметры инструментов"

  1. Откройте файл MyToolsOptionsPackage в редакторе кода.

  2. Добавьте следующую инструкцию using.

    using System.ComponentModel;
    
  3. Объявите OptionPageGrid класс и наследуйте его.DialogPage

    public class OptionPageGrid : DialogPage
    {  }
    
  4. Примените к ProvideOptionPageAttribute VSPackage классу, чтобы назначить классу категорию параметров и имя страницы параметров для OptionPageGrid. Результат должен выглядеть следующим образом:

    [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 класс.

    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 поддерживает свойства, имеющие соответствующие преобразователи или структуры или массивы, которые могут быть развернуты в свойствах с соответствующими преобразователями. Список преобразователей см. в System.ComponentModel пространстве имен.

  6. Выполните сборку решения и запустите отладку.

  7. В экспериментальном экземпляре Visual Studio в меню "Сервис " выберите пункт "Параметры".

    На левой панели вы увидите "Моя категория". (Категории параметров перечислены в алфавитном порядке, поэтому она должна отображаться примерно на полпути списка.) Откройте мою категорию и выберите страницу "Моя сетка". Сетка параметров отображается в правой области. Категория свойств — My Options, а имя свойства — My Integer Option. Описание свойства, параметр "Мое целое число", отображается в нижней части области. Измените значение с исходного значения 256 на другое. Нажмите кнопку "ОК", а затем снова откройте страницу "Моя сетка". Вы увидите, что новое значение сохраняется.

    Страница параметров также доступна в поле поиска Visual Studio. В поле поиска в верхней части интегрированной среды разработки введите "Моя категория" и вы увидите страницу "Моя категория " Моя сетка">, указанную в результатах.

Создание настраиваемой страницы "Параметры инструментов"

В этом разделе описано, как создать страницу параметров инструментов с пользовательским пользовательским интерфейсом. Эта страница используется для отображения и изменения значения свойства.

  1. Откройте файл MyToolsOptionsPackage в редакторе кода.

  2. Добавьте следующую инструкцию using.

    using System.Windows.Forms;
    
  3. OptionPageCustom Добавьте класс непосредственно перед классомOptionPageGrid. Производный новый класс от DialogPage.

    public class OptionPageCustom : DialogPage
    {
        private string optionValue = "alpha";
    
        public string OptionString
        {
            get { return optionValue; }
            set { optionValue = value; }
        }
    }
    
  4. Добавьте атрибут GUID. Добавьте свойство OptionString:

    [Guid("00000000-0000-0000-0000-000000000000")]
    public class OptionPageCustom : DialogPage
    {
        private string optionValue = "alpha";
    
        public string OptionString
        {
            get { return optionValue; }
            set { optionValue = value; }
        }
    }
    
  5. Примените секунду ProvideOptionPageAttribute к классу VSPackage. Этот атрибут назначает класс категории параметров и имени страницы параметров.

    [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.

  7. Добавьте элемент управления TextBox в пользовательский элемент управления.

    В окне "Свойства" на панели инструментов нажмите кнопку "События" и дважды щелкните событие "Оставить". Новый обработчик событий отображается в коде MyUserControl.cs .

  8. Добавьте общедоступное OptionsPage поле, Initialize метод в класс элемента управления и обновите обработчик событий, чтобы задать значение параметра содержимому текстового поля:

    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 экземпляр. Метод Initialize отображается OptionString в TextBox. Обработчик событий записывает текущее значение TextBox в текстовое поле OptionString при выходе фокуса из текстового поля.

  9. В файле кода пакета добавьте переопределение свойства в OptionPageCustom класс для OptionPageCustom.Window создания, инициализации и возврата экземпляраMyUserControl. Теперь класс должен выглядеть следующим образом:

    [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. Постройте и запустите проект.

  11. В экспериментальном экземпляре нажмите кнопку "Параметры инструментов>".

  12. Найдите мою категорию и найдите пользовательскую страницу.

  13. Измените значение OptionString. Нажмите кнопку "ОК", а затем снова откройте страницу "Моя пользовательская". Вы увидите, что новое значение сохранено.

Параметры доступа

В этом разделе вы получите значение параметра из VSPackage, на котором размещена связанная страница параметров инструментов. Тот же метод можно использовать для получения значения любого общедоступного свойства.

  1. В файле кода пакета добавьте общедоступное свойство OptionInteger в класс MyToolsOptionsPackage .

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

    Этот код вызывает GetDialogPage создание или извлечение экземпляра OptionPageGrid . OptionPageGrid вызовы LoadSettingsFromStorage для загрузки его параметров, которые являются общедоступными свойствами.

  2. Теперь добавьте пользовательский шаблон элемента команды с именем MyToolsOptionsCommand , чтобы отобразить это значение. В диалоговом окне "Добавление нового элемента" перейдите в Visual C#>Extensibility и выберите "Пользовательская команда". В поле "Имя" в нижней части окна измените имя файла команды на MyToolsOptionsCommand.cs.

  3. В файле MyToolsOptionsCommand замените текст метода команды ShowMessageBox следующим образом:

    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. Выполните сборку решения и запустите отладку.

  5. В экспериментальном экземпляре в меню "Сервис " нажмите кнопку "Вызвать MyToolsOptionsCommand".

    В поле сообщения отображается текущее значение OptionInteger.

Страница "Открыть параметры"

В этом разделе вы добавите команду и событие для кнопки, чтобы открыть страницу параметров

  1. Сначала добавьте файл с именем OpenPageCommand.cs.

  2. Затем откройте Файл OpenPageCommand.cs и измените метод Execute.

    private void Execute(object sender, EventArgs e)
    {
        ThreadHelper.ThrowIfNotOnUIThread();
        Type optionsPageType = typeof(OptionPageCustom);
        Instance.package.ShowOptionPage(optionsPageType);
    }
    
  3. Запустите проект, а затем нажмите кнопку "Вызвать" (она находится под параметром "Инструмент" по умолчанию), а затем откроется страница параметров.

  4. Дополнительные сведения о открытии страницы параметров могут ссылаться на следующие документы.