Прошел курс. Получил код Dreamspark. Ввожу код на сайте, пишет: Срок действия этого кода проверки уже истек. Проверьте, правильно ли введен код. У вас осталось две попытки. Вы также можете выбрать другой способ проверки или предоставить соответствующие документы, подтверждающие ваш академический статус.
Как активировать код? |
Опубликован: 25.03.2010 | Доступ: свободный | Студентов: 1446 / 158 | Оценка: 4.31 / 4.00 | Длительность: 25:42:00
Тема: Программирование
Специальности: Программист, Архитектор программного обеспечения
Теги:
Лекция 16:
Динамическая компоновка формы
Класс управления списком стиля шрифта StyleComboBox
Разработаем класс StyleComboBox, который будет реализовывать поддержку стилей шрифтов и его экземпляр будет размещен в ячейке под текстовой меткой "Начертание". Этот класс будет расширением класса стандартного элемента управления поля со списком ComboBox. В нем нужно учесть, что не все семейства шрифтов поддерживают полный набор стилей:
а также нужно учесть дополнительные стили, применимые ко всем вышеперечисленным стилям:
Этот класс должен самостоятельно заполнять список доступными стилями при выборе пользователем конкретного шрифта, а также поддерживать поле списка при щелчке на соответствующем стиле. Вот этот класс-расширение StyleComboBox, размещенный в отдельном одноименном файле
using System; using System.Drawing; using System.Windows.Forms; namespace Test { // Расширяем библиотечный ComboBox на управление стилем class StyleComboBox : ComboBox { // Конструктор настройки стиля как списка с редактируемым полем public StyleComboBox() { this.DropDownStyle = ComboBoxStyle.DropDown;// По умолчанию } // Свойство типа перечисления System.Drawing.FontStyle // Обеспечивает управление содержимым самого поля списка // Преобразует название стиля в поле в стиль и наоборот public FontStyle FontStyle { // Для того, чтобы заполнять русскими названиями стилей get { // Возвращаем стиль, соответствующий названию в поле if (this.SelectedItem.ToString() == "жирный курсив") return FontStyle.Bold | FontStyle.Italic; else if (this.SelectedItem.ToString() == "жирный") return FontStyle.Bold; else if (this.SelectedItem.ToString() == "курсив") return FontStyle.Italic; else return FontStyle.Regular; } set { // Преобразуем выбранный в списке стиль // в название стиля в поле списка // Применяется прием - побитовая проверка по маске if ((value & FontStyle.Bold)!=0 && (value & FontStyle.Italic) != 0) this.SelectedItem = "жирный курсив"; else if ((value & FontStyle.Bold) != 0) this.SelectedItem = "жирный"; else if ((value & FontStyle.Italic) != 0) this.SelectedItem = "курсив"; else this.SelectedItem = "обычный"; } } // Метод добавляет в список название стиля, если он есть в шрифте, // но отсутствует в списке, или удаляет из списка старое название, // если оно есть в списке, но соответствующий стиль отсутствует в шрифте void TryStyle(string strFamilyName, FontStyle style, string strStyleName) { // Все параметры входные // strFamilyName - имя шрифта // style - стиль, соответствующий названию // strStyleName - название стиля в списке // Ищем название в списке. Если не найдено, то возвращается -1 int index = this.FindStringExact(strStyleName); // Безопасный код try { // Пробуем создать объект заданного шрифта. Если он есть, // то исключение не возникает, и если ранее не найден в списке, // добавляем его название в список new Font(strFamilyName, 12, style); if (index == -1) Items.Add(strStyleName); } catch { // На случай, если при смене шрифта список не очищаем!!! // Откат, заказанного стиля в данном шрифте нет. Корректируем // список, если в нем осталось название стиля от прежнего шрифта if (index != -1) { this.Items.Remove(strStyleName); } } } // Свойство, заполняющее список стилями для заданного шрифта public string FamilyName { set { // Для сохранения выделенного стиля при смене шрифта string oldStyleName = ""; if (this.SelectedIndex != -1)// Игнорируем первый запуск oldStyleName = this.SelectedItem.ToString(); // Очищаем список и заполняем заново, // чтобы соблюсти порядок следования названий стилей // необязательно, но тогда названия будут - как придется this.Items.Clear(); // Выстраиваем порядок стилей как в стандартном диалоге TryStyle(value, FontStyle.Regular, "обычный"); TryStyle(value, FontStyle.Italic, "курсив"); TryStyle(value, FontStyle.Bold, "жирный"); TryStyle(value, FontStyle.Bold | FontStyle.Italic, "жирный курсив"); // Выделяем позицию списка int index = this.FindStringExact(oldStyleName); if (index != -1)// Если выделенный стиль имеется и в новом шрифте this.SelectedIndex = index; else // Нет ранее выделенного стиля в новом шрифте, сброс в начало this.SelectedIndex = 0; } } // Свойство для возврата русского названия текущего стиля public string StyleNameRus { get { return this.SelectedItem.ToString(); } } } }Листинг 16.15 . Код выбора стилей шрифта в файле StyleComboBox.cs