Создание страницы параметров
В этом пошаговом руководстве создается простая страница "Сервис и параметры", которая использует сетку свойств для проверки и задания свойств.
Чтобы сохранить эти свойства и восстановить их из файла параметров, выполните следующие действия, а затем см. раздел "Создание категории параметров".
MPF предоставляет два класса, помогающие создавать страницы параметров инструментов, Package класс и DialogPage класс. Вы создаете VSPackage для предоставления контейнера для этих страниц путем подкласса Package
класса. Вы создаете каждую страницу параметров инструментов, исходя из DialogPage
класса.
Создание страницы сетки параметров инструментов
В этом разделе описано, как создать простую сетку свойств "Параметры инструментов". Эта сетка используется для отображения и изменения значения свойства.
Создание проекта VSIX и добавление VSPackage
Каждое расширение Visual Studio начинается с проекта развертывания VSIX, который будет содержать ресурсы расширения. Создайте проект VISUAL Studio VSIX с именем
MyToolsOptionsExtension
. Шаблон проекта VSIX можно найти в диалоговом окне "Новый проект ", выполнив поиск vsix.Добавьте VSPackage, добавив шаблон элемента пакета Visual Studio с именем
MyToolsOptionsPackage
. Щелкните правой кнопкой мыши узел проекта в Обозревателе решений, а затем выберите Добавить>Новый элемент. В диалоговом окне "Добавление нового элемента" перейдите к расширяемости элементов>Visual C# и выберите пакет Visual Studio. В поле "Имя" в нижней части диалогового окна измените имяMyToolsOptionsPackage.cs
файла на . Дополнительные сведения о создании VSPackage см. в статье "Создание расширения с помощью VSPackage".
Создание сетки свойств "Параметры инструментов"
Откройте файл MyToolsOptionsPackage в редакторе кода.
Добавьте следующую инструкцию using.
using System.ComponentModel;
Объявите
OptionPageGrid
класс и наследуйте его.DialogPagepublic class OptionPageGrid : DialogPage { }
Примените к 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
OptionInteger
Добавьте свойство вOptionPageGrid
класс.Примените к System.ComponentModel.CategoryAttribute свойству категорию сетки свойств.
Примените к System.ComponentModel.DisplayNameAttribute свойству имя.
Примените к System.ComponentModel.DescriptionAttribute свойству описание.
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 пространстве имен.
Выполните сборку решения и запустите отладку.
В экспериментальном экземпляре Visual Studio в меню "Сервис " выберите пункт "Параметры".
На левой панели вы увидите "Моя категория". (Категории параметров перечислены в алфавитном порядке, поэтому она должна отображаться примерно на полпути списка.) Откройте мою категорию и выберите страницу "Моя сетка". Сетка параметров отображается в правой области. Категория свойств — My Options, а имя свойства — My Integer Option. Описание свойства, параметр "Мое целое число", отображается в нижней части области. Измените значение с исходного значения 256 на другое. Нажмите кнопку "ОК", а затем снова откройте страницу "Моя сетка". Вы увидите, что новое значение сохраняется.
Страница параметров также доступна в поле поиска Visual Studio. В поле поиска в верхней части интегрированной среды разработки введите "Моя категория" и вы увидите страницу "Моя категория " Моя сетка">, указанную в результатах.
Создание настраиваемой страницы "Параметры инструментов"
В этом разделе описано, как создать страницу параметров инструментов с пользовательским пользовательским интерфейсом. Эта страница используется для отображения и изменения значения свойства.
Откройте файл MyToolsOptionsPackage в редакторе кода.
Добавьте следующую инструкцию using.
using System.Windows.Forms;
OptionPageCustom
Добавьте класс непосредственно перед классомOptionPageGrid
. Производный новый класс отDialogPage
.public class OptionPageCustom : DialogPage { private string optionValue = "alpha"; public string OptionString { get { return optionValue; } set { optionValue = value; } } }
Добавьте атрибут 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; } } }
Примените секунду 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
Добавьте в проект новый элемент управления пользователем с именем MyUserControl.
Добавьте элемент управления TextBox в пользовательский элемент управления.
В окне "Свойства" на панели инструментов нажмите кнопку "События" и дважды щелкните событие "Оставить". Новый обработчик событий отображается в коде MyUserControl.cs .
Добавьте общедоступное
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
при выходе фокуса из текстового поля.В файле кода пакета добавьте переопределение свойства в
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; } } }
Постройте и запустите проект.
В экспериментальном экземпляре нажмите кнопку "Параметры инструментов>".
Найдите мою категорию и найдите пользовательскую страницу.
Измените значение OptionString. Нажмите кнопку "ОК", а затем снова откройте страницу "Моя пользовательская". Вы увидите, что новое значение сохранено.
Параметры доступа
В этом разделе вы получите значение параметра из VSPackage, на котором размещена связанная страница параметров инструментов. Тот же метод можно использовать для получения значения любого общедоступного свойства.
В файле кода пакета добавьте общедоступное свойство OptionInteger в класс MyToolsOptionsPackage .
public int OptionInteger { get { OptionPageGrid page = (OptionPageGrid)GetDialogPage(typeof(OptionPageGrid)); return page.OptionInteger; } }
Этот код вызывает GetDialogPage создание или извлечение экземпляра
OptionPageGrid
.OptionPageGrid
вызовы LoadSettingsFromStorage для загрузки его параметров, которые являются общедоступными свойствами.Теперь добавьте пользовательский шаблон элемента команды с именем MyToolsOptionsCommand , чтобы отобразить это значение. В диалоговом окне "Добавление нового элемента" перейдите в Visual C#>Extensibility и выберите "Пользовательская команда". В поле "Имя" в нижней части окна измените имя файла команды на MyToolsOptionsCommand.cs.
В файле 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)); }
Выполните сборку решения и запустите отладку.
В экспериментальном экземпляре в меню "Сервис " нажмите кнопку "Вызвать MyToolsOptionsCommand".
В поле сообщения отображается текущее значение
OptionInteger
.
Страница "Открыть параметры"
В этом разделе вы добавите команду и событие для кнопки, чтобы открыть страницу параметров
Сначала добавьте файл с именем OpenPageCommand.cs.
Затем откройте Файл OpenPageCommand.cs и измените метод Execute.
private void Execute(object sender, EventArgs e) { ThreadHelper.ThrowIfNotOnUIThread(); Type optionsPageType = typeof(OptionPageCustom); Instance.package.ShowOptionPage(optionsPageType); }
Запустите проект, а затем нажмите кнопку "Вызвать" (она находится под параметром "Инструмент" по умолчанию), а затем откроется страница параметров.
Дополнительные сведения о открытии страницы параметров могут ссылаться на следующие документы.