будут обрабатываться компилятором, как если бы они вводились в командной строке. | |
/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: <dirfile> | Поиск подкаталогов для исходного файла с целью компиляции. Имеются два параметра: dir (необязательный): каталог или подкаталог, из которого начинается поиск. Если не определен, то это каталог текущего проекта. file : файл или файлы для поиска. Можно использовать метасимволы. |
/unsafe | Разрешает компиляцию кода, который использует ключевое слово unsafe . |
Статья 'Программное соединение событий в C#' взята из базы знаний на сайте C# Today www.csharptoday.com издательства Wrox. Код, используемый в статье, можно загрузить вместе с кодом для всей книги со страницы Professional C# на Wrox.com.
Программное соединение событий в C#
Одним из наиболее мощных свойств .NET является возможность создания динамических форм для приложений Windows. Известные и раньше, сегодня они очень легко создаются в .NET. Это позволяет получать объекты, производные из System.Windows.Forms.Control
, непосредственно во время выполнения, и использовать их точно таким же образом, как если бы они были созданы проектировщиком форм. Динамические элементы управления могут использоваться для настройки интерфейса пользователя приложения в зависимости от некоторой информации о среде выполнения, например административной утилиты базы данных, где кнопка динамически добавляется в утилиту для каждой таблицы, содержащейся в базе данных. Немного сложным моментом этой темы является соединение обработчиков событий с элементами управления. В этой статье показано, как динамически создавать элементы управления в C# и соединять методы с событиями элементов управления.
Давайте создадим новый проект Visual C# — Windows Application и назовем его DynamicButtons.
Прежде всего необходимо скомпоновать базовую форму, которая выглядит следующим образом:

Пусть кнопка будет называться cmdCreateButtons
, а текстовое поле — txtLog
. Убедитесь, что в txtLog
свойство Multiline
задано как True
, а свойство ScrollBars
— как Vertical
.
Когда будет нажата cmdCreateButtons
, мы добавим к форме шесть кнопок, расположенных в пустом пространстве справа от txtLog
. В то время как обработчики событий конфигурируются для новых кнопок, определим какая кнопка инициирует вызов. Здесь нужно, чтобы все кнопки имели дополнительные целые свойства с именем ID, которые при создании пронумерованы от 1 до 6.
Одной из отличительных черт .NET, к которой разработчикам VB необходимо привыкнуть, является идея наследования существующих классов из Framework (Среды разработки) и их расширение. Эта техника является очень эффективной. В данном случае необходимо создать новый класс с именем DynamicButton
и наследовать его из System.Windows.Forms.Button
. Это означает, что наш новый класс будет обладать всей функциональностью обычного элемента управления Button
, но при этом иметь и другие свойства, которые нам понадобятся, в частности новое свойство с именем DynamicID
. Так как этот класс является производным из