Главная » Статьи для тега "windows"

Создаем проект

Добавлено Дата: 22 March, 2011 категория: C#, Компоненты

Для начала создадим новый проект типа Windows Control Library (рис. 5.1). По умолчанию Visual Studio добавляет класс UserControii, который надо переименовать в GradientLabei (именно так мы назовем наш класс метки с градиентной заливкой). Можно переименовать и сам файл тоже. Полученный класс мы наследуем от класса Label (придется еще удалить присваивание свойства AutoScaieMode, т. к. у класса Label его нет). Вот, собственно, и все. Компилируем. Наш первый компонент готов!

Читать »

Встроенные компоненты C# примеры

Добавлено Дата: 17 March, 2011 категория: C#, Компоненты

Компонент может содержать другие компоненты, но возникает одна проблема— во время разработки такие "встроенные" компоненты не получают никаких сообщений от Windows и, соответственно, не реагируют на мышь и клавиатуру.

Попробуйте пролистать значения в компоненте ListBox (рис. 6.9), который встроен в компонент ListBoxControl (листинг 6.13). Скроллинг попросту не работает, а компонент ListBox ведет себя "как нарисованный".

Читать »

Расширение контекстного меню формы

Добавлено Дата: 8 March, 2011 категория: C#, Компоненты

В разд. 6.5 с помощью свойства Verbs класса ComponentDesigner мы расширяли контекстное меню компонента. Сервис iMenuService позволяет аналогично расширить контекстное меню дизайнера, т. е. формы, на которую помещаются компоненты. Следует помнить, что сервис добавляет "глобальное" меню, поэтому перед добавлением я сначала удаляю это меню. Если оно еще не было добавлено— ничего страшного не произойдет, а если было, то это поможет избежать дублирования. В листинге 7.4 показано добавление глобального меню, при вызове которого выводится небольшое сообщение.

Читать »

Выбор базового класса

Добавлено Дата: 7 March, 2011 категория: C#, Компоненты

Для того чтобы более четко понимать, как правильно выбрать базовый класс для нового компонента, MSDN формулирует следующие правила, О Если класс использует некоторые внешние ресурсы (например, файлы, порты и т, п.), но не будет помещаться на форму во время разработки, достаточно реализовать интерфейс system. iDisposabie. Разумеется, такой класс не будет компонентом, но если вы не собираетесь помещать его на форму, то этого и не требуется.

Читать »

Локализация

Добавлено Дата: 27 February, 2011 категория: C#, Компоненты

Следующий шаг Microsoft в развитии модели сериализации в код состоял в реализации возможности локализации приложений. Посмотрите, как сериа- лизуется текст кнопки:

this.buttonl = new System.Windows.Forms.Button(); this.buttonl.Name = "buttonl"; this.buttonl.Text = "Execute";

Читать »

Получение информации о проекте

Добавлено Дата: 24 February, 2011 категория: C#, Компоненты

Расположенный на форме компонент обладает полной информацией обо всех принадлежащих ему объектах, но иногда возникает необходимость посмотреть вверх и получить информацию о проекте, которому принадлежит форма, содержащая вставленный компонент. В этом случае можно использовать класс Project item. Получить его экземпляр можно недокументированным вызовом метода site.Getservice(typeof {Projectitem}). Например, в листинге?.^ показан код компонента, получающего имя формы, имя документа и даже число точек останова в текущем проекте (рис. 7.5). Код здесь достаточно простой и, я думаю, в дополнительных комментариях не нуждается. Единственное замечание— для работы этого компонента требуется подключить библиотеки EnvDTE и EnvDTE80, содержащие описание класса projectitem (рис. 7.6).

Читать »

Прямая обработка очереди сообщений

Добавлено Дата: 18 December, 2010 категория: C#, Компоненты

Если стандартной функциональности режима разработки не хватает, можно напрямую обрабатывать очередь сообщений Windows, также как это делается компонентом в режиме выполнения. Отличие состоит в том, что дизайнер компонента (в отличие от самого компонента) будет получать сообщения только в режиме разработки.

Читать »

Слои и маркеры

Добавлено Дата: 18 December, 2010 категория: C#, Компоненты

При выборе компонента на форме дизайнер предоставляет возможность изменения размеров элемента управления с помощью маркеров (glyph). Количество и положение маркеров может меняться в зависимости от возможностей компонента. Так, например, кнопка имеет восемь маркеров, а компонент

Читать »

Провайдеры

Добавлено Дата: 13 December, 2010 категория: C#, Компоненты

Для начала сделаем простое приложение, состоящее из одной формы, и разместим на ней компонент Button (рис. 10.1). Посмотрите на код, появившийся в файле Form 1 .Designer.cs:

this.buttonl = new System.Windows.Forms.Button();

this.buttonl.Location = new System.Drawing.Point(72, 35);

Читать »