Надстройки и мастера

Оценить
(0 голоса)
Теперь, когда пользовательский интерфейс уже есть, мы можем сконцентрироваться на ко­де. Сначала вы можете добавить обработчик события для движений мыши по полю изобра­жения палитры. При помощи обработчика события MouseMove вы можете мгновенно обно­вить ваши метки и второе поле изображения (при движении указателя мыши по изображению палитры): public PaletteControl() { InitializeComponent(); this.pictureBoxPalette.MouseMove += new MduseEventHandler(pictureBoxPalette_MouseMove); this.pictureBoxPalette.Cursor = System.Windows.Forms.Cursors.Cross; } void pictureBoxPalette_MouseMove(object sender, MouseEventArgs e) { // Получить цвет под текущим положением указателя мыши Color color = GetPointColor(е.Х, e.Y); // Обновить метки RGB и второе поле изображения при помощи полученного цвета DisplayColor(color); // Сгенерировать наш код на языке Visual Basic или C#…
Оценить
(0 голоса)
Класс PaletteControl предоставляет два свойства: Code — это строковое свойство, кото­рое содержит код цветовой структуры, сгенерированный при щелчке по палитре, а GenerateVB — это свойство булева типа, которое указывает, какой код должен генериро­вать элемент управления — на языке Visual Basic (GenerateVB = true) или на языке C# (GenerateVB = false). Далее приведены объявления полей и свойств для этих двух свойств: string _code = ,,н; public string Code { get { return _code; } } bool _generateVB = false; public bool GenerateVB { get { return _generateVB; } }
Оценить
(0 голоса)
Когда указатель мыши двигается по полю изображения, вам нужно перехватывать компо­ненты цвета точек, находящихся непосредственно под курсором (GetPointColor), обнов­лять метки и второе поле изображения (чтобы они отражали этот цвет— DisplayColor), а затем генерировать код для реализации соответствующей цветовой структуры (setCode). Далее даны реализации этих процедур: III <suinmary> HI Возвращает структуру Color, представляющую цвет пиксела /// в указанных координатах х и у. /// </summary> III <param name="x"></parain> III <param name=My"></param> III <returns>Структура Color</returns> private Color GetPointColor(int x, int y) { Il   Получить растровое изображение из поля изображения палитры Bitmap bmp = (Bitmap)pictureBoxPalette.Image; // Использовать GetPixel для получения цветовой структуры // для…
Оценить
(0 голоса)
Поскольку вам понадобится для элемента управления некий способ сообщения о том, что пользователь выбрал цвет (например, щелкнул по палитре), то вы также определяете собы­тие пользовательского класса управления, которое происходит каждый раз, когда на изо­бражении палитры регистрируется щелчок мыцш: public event EventHandler ColorSelected; protected virtual void OnColorSelected(EventArgs e) { if (ColorSelected != null) ColorSelected(this, e); } private void pictureBoxPalette_Click(object sender, EventArgs e) { OnColorSelected(new EventArgs()); } Совет Для изоляции и тестирования пользовательского элемента управления вы можете добавить в решение проект типа Windows Forms и встроить элемент управления в форму Windows для его тестирования. Просто перетащите элемент управления на форму и запустите…
Оценить
(0 голоса)
Класс Connect уже имеет основной код надстройки; теперь настало время вернуться к нему и добавить код для приведения в действие пользовательского элемента управления. Вы хо­тите, чтобы надстройка без проблем интегрировалась в среду разработки; для этого вы мо­жете использовать окно инструмента (для отображения уже созданного пользовательского элемента управления). Припоминая обсуждение объектной модели расширяемости, вы знаете, что коллекция Windows2 имеет метод CreateToolWindow2, который позволяет вам создавать ваши собст­венные нестандартные окна инструментов. Примечание Предыдущие версии Visual Studio требовали от вас создания промежуточного эле­мента управления (при помощи языка C++), который обеспечивал бы показ элемента управления в окне инструмента. Окно инструмента (в свою очередь) было…
Оценить
(0 голоса)
Поскольку вы хотите, чтобы окно инструмента создавалось и отображалось после загрузки надстройки, то вызов метода CreateToolWindow2 надо поместить в метод Connect. OnConnection. Сначала вы настраиваете локальный объект, чтобы он указывал на коллекцию DTE. ToolWindows: II   Коллекция DTE.ToolWindows Windows2 toolWindows= (Windows2)_applicationObject.Windows; Затем вам нужен объект, в котором будет храниться ссылка на создаваемое вами окно инст­румента: // Объект для ссылки на создаваемое окно инструмента Window2 toolWindow; И наконец, вам нужно создать параметры, необходимые для метода CreateToolWindow2: // Объект указателя места заполнения; в конечном итоге будет ссылаться //на пользовательский элемент управления object paletteObject = null; // Данный раздел указывает путь и имя класса…
Оценить
(0 голоса)
Вы реагируете на событие ColorSelected посредством получения содержимого свойства PaletteControl. Code и записи его в текущий активный документ. Для этого вам опять пригодятся знания по объектной модели расширяемости, полученные в предыдущей главе. Класс DTE.ActiveDocument будет содержать ссылку на текущий активный документ. При помощи использования точки редактирования вы можете легко вписать текст в текстовый документ: TextDocument currDoc = (Text Document )_applicationObj ect. ActiveDocument .Object ("") ; EditPoint2 ep = (EditPoint2) currDoc.Selection.ActivePoint.CreateEditPoint() ; ep.Insert(_paletteControl.Code); ep.InsertNewLine(1);
Оценить
(0 голоса)
Последний шаг — это сделать конфигурируемым язык надстройки. Пользователи должны иметь возможность указать, какой код они хотят получить из надстройки: на языке C# или на языке Visual Basic. Для этого вам нужно иметь пользовательский интерфейс в виде стра­ницы Options (которая выведет диалоговое окно Options), а также место для сохранения выбранных опций. Создание пользовательского интерфейса страницы Option Надстройки могут ссылаться на страницу Options, которая будет появляться в диалоговом окне Tools Options. Точно так же, как вы делали для пользовательского окна инструментов, вы создадите пользовательский элемент управления для реализации логики и пользователь­ского интерфейса страницы Options. Начните с добавления нового пользовательского элемента управления…
Оценить
(0 голоса)
Механизм регистрации страницы Options такой же, как и для надстройки: используется addin-файл. При помощи добавления нескольких строк кода XML вы можете указать Visual Studio, что в пользовательской надстройке существует страница Options. Вы можете сде­лать это посредством редактирования addin-файла прямо в Visual Studio (поскольку он ав­томатически создается как часть проекта). Для включения необходимой регистрационной информации в виде XML отредактируйте addin- файл и поместите в него следующий XML-код (перед закрывающим тегом </extensibility>): <ToolsOptionsPage> <Category Name="Color Palette"> <SubCategory Name="Code Generation"> <Assembly>C:\Users\lpowers\My Documents\Visual Studio 2008\Projects\ PaletteControlAddIn\PaletteControlAddIn\bin\PaletteControlAddIn.dll</Assembly> <FullClassName>PaletteControlAddIn.PaletteControlOptionPage </FullClassName> </SubCategory> </Category> </ToolsOptionsPage> Для указания названия категории опций (отображаемой в диалоговом окне Tools Options) нужно использовать…
Оценить
(0 голоса)
Visual Studio иитеисивио использует разные мастера для руководства действиями разработ­чика при выполнении различных задач. Мастер Add-in Wizard (который мы обсудили в пре­дыдущих разделах) — это пример одного из мастеров новых проектов New Project Wizard (он запускается тогда, когда вы пытаетесь создать новый проект надстройки). Существуют также мастера для добавления в проекты новых элементов. Вы можете модифицировать существующие мастера для добавления элементов (Project | Add New Item) или создать свой мастер (вместе с его собственным пользовательским интерфейсом). В следующих разделах мы сосредоточимся па том, чтобы разобраться в мастерах, а также на создании пользовательского мастера Add New Item Wizard.
© 2018 www.visualstudios.ru. Все права защищены.