- Фантастика и фэнтези
- Ироническое фэнтези
- Стимпанк
- Детективная фантастика
- Киберпанк
- Попаданцы
- LitRPG
- Космоопера
- Технофэнтези
- Городская фантастика
- Русское фэнтези
- Юмористическая фантастика
- Космическая фантастика
- Боевое фэнтези
- Эпическая фантастика
- Зарубежная фантастика
- Книги магов
- Мистика
- Разная фантастика
- Разное фэнтези
- Любовное фэнтези
- Романтическая фантастика
- Городское фентези
- Историческая фантастика
- Историческое фэнтези
- Социально-философская фантастика
- Сказочная фантастика
- Иностранное фэнтези
- Романтическое фэнтези
- Ироническая фантастика
- Ужасы и Мистика
- Постапокалипсис
- Героическая фантастика
- Фэнтези
- Научная Фантастика
- Социально-психологическая
- Альтернативная история
- Боевая фантастика
- Разная литература
- Пословицы, поговорки
- Шахматы
- Визуальные искусства
- Фанфик
- Авто и ПДД
- Военное
- Отраслевые издания
- Гиды, путеводители
- Зарубежная образовательная литература
- Военная история
- Цитаты из афоризмов
- Современная литература
- Великолепные истории
- Начинающие авторы
- Современная зарубежная литература
- Боевые искусства
- Изобразительное искусство, фотография
- Кино
- Литература 19 века
- Недвижимость
- Музыка, музыканты
- Готические новеллы
- Истории из жизни
- Культура и искусство
- Спецслужбы
- Зарубежная прикладная литература
- Музыка, танцы
- Подростковая литература
- Прочее
- Военная техника, оружие
- Газеты и журналы
- Периодические издания
- Домоводство, Дом и семья
- Любовные романы
- Экономическая литература
- Научные и научно-популярные книги
- О животных
- Биохимия
- Культурология
- Юриспруденция
- Политика
- Психотерапия
- Языкознание
- Научпоп
- Медицина
- Психология, личное
- Радиотехника
- Филология
- Педагогика
- Образовательная литература
- Деловая литература
- Физика
- Науки: разное
- Химия
- Воспитание детей, педагогика
- Детская психология
- Зарубежная публицистика
- Биология
- Архитектура
- Зарубежная психология
- Науки о космосе
- Социология
- Математика
- География
- Беременность, ожидание детей
- Литературоведение
- Транспорт, военная техника
- Обществознание
- Зоология
- География
- Альтернативная медицина
- Иностранные языки
- Ветеринария
- Рефераты
- Астрология
- Биофизика
- Экология
- История Европы
- Учебники
- Шпаргалки
- Государство и право
- Ботаника
- Религиоведение
- История
- Техническая литература
- Прочая научная литература
- Психология
- Детективы и Триллеры
- Справочная литература
- Проза
- Новелла
- Юмор
- Проза
- Историческая проза
- Русская современная проза
- Советская классическая проза
- Повести
- Очерки
- Эссе
- Рассказы
- Зарубежная современная проза
- Сентиментальная проза
- Зарубежная классика
- Афоризмы
- Эпистолярная проза
- Феерия
- Семейный роман/Семейная сага
- Разное
- Антисоветская литература
- Магический реализм
- Русская классическая проза
- Современная проза
- О войне
- Контркультура
- Классическая проза
- Поэзия, Драматургия
- Детская литература
- Детская фантастика
- Детские остросюжетные
- Детские стихи
- Детские приключения
- Внеклассное чтение
- Учебная литература
- Зарубежные детские книги
- Бизнес
- Загадки
- Книги для подростков
- Школьные учебники
- Детский фольклор
- Книги для дошкольников
- Детские детективы
- Детская познавательная и развивающая литература
- Буквари
- Прочая детская литература
- Сказка
- Детская проза
- Детская образовательная литература
- Юмор
- Документальные книги
- Бизнес
- Внешнеэкономическая деятельность
- Тайм-менеджмент
- Кадровый менеджмент
- О бизнесе популярно
- Управление, подбор персонала
- Бизнес
- Менеджмент и кадры
- Продажи
- Экономика
- Ценные бумаги и инвестиции
- Малый бизнес
- Делопроизводство, офис
- Корпоративная культура, бизнес
- Банковское дело
- Финансы
- Зарубежная деловая литература
- Ораторское искусство / риторика
- Личные финансы
- Интернет-бизнес
- Поиск работы
- Государственное и муниципальное управление
- Бухучет и аудит
- Работа с клиентами
- Менеджмент
- Краткое содержание
- Личная эффективность
- Переговоры
- Приключения
- Старинная литература
- Религия и духовность
- Компьютеры и Интернет
- Блог
Читаем без скачивания ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание - Эндрю Троелсен
Шрифт:
Интервал:
Закладка:
private void DisableAllButtos() {
foreach (Control с in this.Controls) {
if (c is Button) ((Button)c).Enabled = false;
}
}
Исходный код. Проект ControlsByHand размещен в подкаталоге, соответствующем главе 21.
Добавление элементов управления в форму в Visual Studio 2005
Теперь, когда вы понимаете суть процесса добавления элементов управления в форму, давайте посмотрим, как Visual Studio 2005 может автоматизировать этот процесс. Создайте новый проект Windows Application, выбрав дня него произвольное имя, поскольку этот проект будет предназначен только для тестирования. Аналогично рассмотренному в главе 19 случаю создания меню, панелей инструментов и строк состояния, когда среда IDE выполняла автоматическое добавление подходящей переменной в файл *.Designer.cs, те же действия выполняются средой разработки и при перетаскивании в окно проектирования формы любого другого элемента управления. Точно так же при изменении внешнего вида элемента с помощью окна свойств IDE выполняется соответствующие изменения программного кода члена-функции InitializeComponent() (также размещенного в файле *.Designer.cs).
Замечание. Напомним, что окно свойств, если щелкнуть в нем на кнопке с пиктограммой молнии, позволяет обработать события элемента управления. Нужно выбрать элемент из раскрывающегося списка и указать имя метода, который должен вызываться для интересующих вас событий (или просто выполнить двойной щелчок на имени события, чтобы сгенерировать обработчик события с именем, предлагаемым по умолчанию).
Добавьте в окно проектирования формы типы TextBox (текстовое окно) и Button (кнопка). Обратите внимание на то, что при изменении положения элемента управления в окне проектирования формы Visual Studio 2005 предлагаются визуальные подсказки, касающиеся размещения и выравнивания этого элемента (рис. 21.2).
После размещения Button и Textbox в окне проектирования формы рассмотрите программный код, сгенерированный в методе InitializeComponent(). Вы обнаружите, что соответствующие типы автоматически были созданы с помощью new и добавлены в коллекцию ControlCollection формы (в дополнение к установкам, которые вы, возможно, добавили с помощью окна свойств).
private void InitializeComponent() {
this.btnMyButton = new System.Windows.Forms.Button();
this.txtMyTextBox = new System.Windows.Forms.TextBox();
…
// MainWindow
//
…
this.Controls.Add(this.txtMyTextBox);
this.Controls.Add(this.btnMyButton);
…
}
Рис. 21.2. Визуальные подсказки по поводу выравнивания и размещения элементов управления в форме
Как видите, такие инструменты, как Visual Studio 2005, во многом избавляют вас от необходимости вводить программный код вручную (возможно, избавляя и от боли в пальцах). Итак, в результате ваших действий в окне проектирования формы среда разработки автоматически модифицирует InitializeComponent(). Но вы также можете конфигурировать элементы управления и непосредственно в программном коде (в конструкторах, обработчиках событий, вспомогательных функциях и т.д.), поскольку задачей InitializeComponent() является создание начального состояния элементов интерфейса. Тем не менее, если вы хотите упростить себе жизнь, позвольте Visual Studio 2005 поддерживать InitializeComponent() автоматически, поскольку средства проектирования формы могут проигнорировать или переписать изменения, сделанные вами в рамках этого метода.
Работа с базовыми элементами управления
Пространство имен System.Windows.Forms определяет множество "базовых элементов управления", которые можно видеть во многих типичных окнах (это кнопки, надписи, текстовые окна, переключатели и т.д.). Вы, наверное, уже знаете об основных возможностях соответствующих типов, но давайте рассмотрим некоторые наиболее интересные особенности следующих базовых элементов пользовательского интерфейса:
• Label (надпись), TextBox (текстовое окно) и MaskedTextBox (маскированное текстовое окно);
• Button (кнопка);
• CheckBox (кнопка с независимой фиксацией), RadioButton (кнопка с зависимей фиксацией) и GroupBox (групповой блок);
• CheckedListBox (окно отмечаемого списка), ListBox (окно списка) и ComboBox (комбинированное окно).
Освоив работу с этими элементами управления, производными от типа Control, мы с вами обратим внимание на более "экзотические" элементы, такие как MonthCalendar, TabControl, TrackBar, WebBrowser и т.д.
Элемент Label
Элемент управления Label (надпись) может содержать информацию, доступную только для чтения (текст или изображение), например, для того, чтобы пояснить пользователю роль и возможности использования остальных элементов управления, помещенных в форму. Предположим, вы создали в Visual Studio 2005 новый проект Windows Forms с именем LabelsAndTextBoxes. В рамках полученного экземпляра типа Form определите метод с именем CreateLabelControl(), который сначала создает и конфигурирует тип Label, а затем добавляет его в коллекцию элементов управления формы,
private void CreateLabelControl() {
// Создание и конфигурация Label.
Label lblInstructions = new Label();
lblInstructions.Name = "lblInstructions";
lblInstructions.Text = ''Введите значения во все окна текста";
lblInstructions.Font = new Font("Times New Roman", 9.75F, FontStyle.Bold);
lblInstructions.AutoSize = true;
lblInstructions.Location = new System.Drawing.Point(16, 13);
lblInstructions.Size = new System.Drawing.Size(240, 16);
// Добавление в коллекцию элементов управления формы.
Controls.Add(lblInstructions);
}
Чтобы увидеть соответствующую подсказку в верхней части главного окна формы, поместите вызов этой вспомогательной функции в конструктор формы.
public MainWindow() {
InitializeComponent();
CreateLabelControl();
CenterToScreen();
}
В отличие от большинства других элементов, элементы управления Label не могут получать фокус ввода при переходах по клавише табуляции. Однако в .NET 2.0 для любого элемента управления Label можно создать мнемонические клавиши установив для свойства UseMnemonic значение true (именно это значение устанавливается для данного свойства по умолчанию). После этого в свойстве Text надписи можно (с помощью символа амперсанда &) определить комбинацию клавиш для перехода к соответствующему элементу управления.
Замечание. Порядок переходов по табуляции подробнее будет обсуждаться позже, а пока что достаточно заметить, что порядок данного элемента управления при переходах по клавише табуляции устанавливается с помощью свойства TabIndex. По умолчанию значение TabIndex элемента управления соответствует порядку, в котором элементы добавлялись в окно проектирования формы. Поэтому, если вы сначала добавите Label, а затем – Textbox, то для Label значение TabIndex будет установлено равным 0, а для Textbox – равным 1.
Для примера с помощью окна проектирования формы постройте пользовательский интерфейс, состоящий из трех Label и трех Textbox (рис. 21.3). Не забудьте оставить свободное место в верхней части формы для отображения элемента Labels динамически создаваемого в методе CreateLabelControl(), и обратите внимание на то, что здесь каждая надпись содержит подчеркнутую букву. Так выделяются буквы, которые в значении свойства Text надписи были помечены знаком &. Вы, наверное, знаете, что помеченные знаком & символы обеспечивают возможность активизации элемента пользователем с помощью выбора комбинации клавиш ‹Alt+ помеченный символ›.
Рис. 21.3. Назначение мнемоник элементам управления Label
Запустив проект, вы сможете перейти к любому из имеющихся элементов TextBox, используя ‹Alt+n›, ‹Alt+M› или ‹Alt+T›.
Элемент TextBox
В отличие от элемента управления Label, элемент управления TextBox (текстовое окно) обычно не является доступным только для чтения (хотя его можно сделать таким, если установить для свойства ReadOnly значение true) и часто используется как раз для того, чтобы позволить пользователю ввести текстовые данные для обработки. Тип TextBox можно настроить на поддержку одной строки текста или множества строк, его можно настроить на маскировку вводимых символов (например, с помощью звездочки, *) и в случае многострочного ввода этот элемент может содержать полосы прокрутки. Вдобавок к возможностям, унаследованным от базовых классов, TextBox определяет несколько своих интересных свойств (табл. 21.2).
Таблица 21.2. Свойства TextBox
Свойство Описание AcceptsReturn Читает или задает значение, являющееся индикатором необходимости перехода на новую строку при нажатии ‹Enter› в элементе управления TextBox, допускающем многострочный ввод (иначе нажатие ‹Enter› активизирует кнопку формы, используемую по умолчанию) CharacterCasing Читает или задает значение, указывающее необходимость изменения элементом управления TextBox регистра символов при их вводе PasswordChar Читает или задает символ, применяемый для маскировки вводимых символов в однострочном элементе управления TextBox, используемом для ввода паролей ScrollBars Читает или задает значение, указывающее необходимость наличии полос прокрутки в элементе управления TextBox, допускающем многострочный ввод TextAlign Читает или задает значение, соответствующее одному из значений перечня HorizontalAlignment и указывающее правила выравнивания текста в элементе управления TextBoxЧтобы продемонстрировать некоторые возможности TextBox, поместите в форму три элемента управлений TextBox. Первый элемент TextBox (с именем txtPassword) следует настроить для ввода пароля, т.е. символы, вводимые в поле TextBox, не должны быть видимыми, а вместо них должны появляться символы, заданные значением свойства PasswordChar.