C# для профессионалов. Том II
Шрифт:
Следующая таблица показывает, как задавать директивы препроцессора:
Параметр | Назначение |
---|---|
/define:<name> /d:<name> | Определяет символ препроцессора, заданный с помощью <name> . |
Эта таблица объясняет параметры, связанные с включением внешних ресурсов:
Параметр | Назначение |
---|---|
/linkresourсе:<имя файла> /linkres:<имя файла> | Создает связь с указанным ресурсом .NET. Двумя необязательными дополнительными параметрами (разделенными запятыми) являются: identifier : логическое имя ресурса; имя применяется для загрузки ресурса (по умолчанию используется имя файла), mimetype : строка, представляющая тип среды ресурса (по умолчанию используется none ). Эта возможность
|
/resource:<имя файла> /res:<имя файла> | Вставляет определенный .NET ресурс в файл вывода. Двумя дополнительными необязательными параметрами (разделенными запятыми) являются: identifier : логическое имя ресурса; имя используется для загрузки ресурса (по умолчанию используется имя файла), mimetype : строка представляющая тип среды ресурса (по умолчанию none ). |
/win32icon:<имя файла> | Вставляет указанный файл пиктограммы Win32 (.ico) в файл вывода. |
/win32res:<имя файла> | Вставляет указанный файл ресурса Win32 (.res) в файл вывода. Этот параметр недоступен в Visual Studio.NET. |
Заключительная таблица перечисляет смешанные параметры компилятора.
Параметр | Назначение |
---|---|
@<имя файла> | Указывает файл, содержащий все параметры компилятора и исходные файлы, которые будут обрабатываться компилятором, как если бы они вводились в командной строке. |
/baseaddress:<address> | Указывает предпочтительный базовый адрес для загрузки DLL. Значение <address> может быть десятичным, шестнадцатеричным или восьмеричным. |
/codepage:<id> | Определяет кодовую страницу (значение, передаваемое как параметр <id> ) для использования при компиляции всех файлов исходного кода. Вводите этот параметр, если в файлах C# применяется множество символов, не используемых по умолчанию в данной системе. Этот параметр недоступен в Visual Studio.NET. |
/help /? | Передает параметры компилятора на стандартный вывод. Этот параметр недоступен в Visual Studio.NET. |
/incremental<+ | -> /incr<+ | -> | Разрешает выполнять инкрементную компиляцию файлов исходного кода, которая компилирует только те функции, которые были изменены с момента предыдущей компиляции. Информация о состоянии предыдущей компиляции хранится в двух файлах — . dbg (или .pdb , если был определен параметр /debug ) для хранения информации отладки и .incr для хранения информации о состоянии. Чтобы включить параметр, используйте синтаксис: /incremental или /incremental+ . Чтобы отключить, используйте синтаксис: /incremental- . Этот параметр отключен по умолчанию. |
/main:<class> | Определяет расположение метода Main , если в исходном коде существует более одного метода с таким именем. |
/nologo | Подавляет вывод заголовочной информации компилятора. Этот параметр недоступен в Visual Studio.NET. |
/recurce: <dir\file> | Поиск подкаталогов для исходного файла с целью компиляции. Имеются два параметра: dir (необязательный): каталог или подкаталог, из которого начинается поиск. Если не определен, то это каталог текущего проекта. file : файл или файлы для поиска. Можно использовать метасимволы. |
/unsafe | Разрешает компиляцию кода, который использует ключевое слово unsafe . |
C# Сегодня
Статья "Программное соединение событий в C#" взята из базы знаний на сайте C# Today www.csharptoday.com издательства Wrox. Код, используемый в статье, можно загрузить вместе с кодом для всей книги со страницы Professional C# на Wrox.com.
Программное соединение событий в C#
Одним из наиболее мощных свойств .NET является возможность создания динамических форм для приложений Windows. Известные и раньше, сегодня они очень легко создаются в .NET. Это позволяет получать объекты, производные из
Давайте создадим новый проект Visual C# — Windows Application и назовем его DynamicButtons.
Прежде всего необходимо скомпоновать базовую форму, которая выглядит следующим образом:
Пусть кнопка будет называться
Когда будет нажата
Одной из отличительных черт .NET, к которой разработчикам VB необходимо привыкнуть, является идея наследования существующих классов из Framework (Среды разработки) и их расширение. Эта техника является очень эффективной. В данном случае необходимо создать новый класс с именем
Более того, действительно важный аспект наследования состоит в том, что любой знающий, как использовать
Теперь есть новый класс, который ведет себя так же, как кнопка, но имеет целое свойство с именем
Фактически мы хотим добавить кнопке функциональность, в частности предоставить ID везде, где создается кнопка, и задать текст по умолчанию для отражения этого ID:
Далее можно перейти к cозданию кнопок
Чтобы создать кнопки, добавим код обработчика для кнопки
Первая часть обработчика задает цикл:
Здесь задано, что высота кнопки равна 25 и у начинается в той же точке, что и вершина
Чтобы создать кнопку, делаем так:
Отметим, как значение