|
Прошел курс. Получил код Dreamspark. Ввожу код на сайте, пишет: Срок действия этого кода проверки уже истек. Проверьте, правильно ли введен код. У вас осталось две попытки. Вы также можете выбрать другой способ проверки или предоставить соответствующие документы, подтверждающие ваш академический статус.
Как активировать код? |
Опубликован: 25.03.2010 | Доступ: свободный | Студентов: 1447 / 158 | Оценка: 4.31 / 4.00 | Длительность: 25:42:00
Тема: Программирование
Специальности: Программист, Архитектор программного обеспечения
Лекция 16:
Динамическая компоновка формы
Класс управления раскрывающимся списком цвета ColorComboBox
Выберем несколько цветов для нашего списка управления цветом, которые приведены в таблице.




Из-за трудностей перевода не будем вставлять в список русские названия цветов, а расположим в нем образцы цвета вместе с их оригинальными названиями.
Вот класс-расширение ColorComboBox, размещенный в отдельном одноименном файле
using System;
using System.Drawing;
using System.Windows.Forms;
namespace Test
{
// Расширяем библиотечный ComboBox на управление цветом
class ColorComboBox : ComboBox
{
public ColorComboBox()// Конструктор начальных настроек
{
// Заполняем источник данных ComboBox массивом названий цветов
this.DataSource = new string[] {
"Black", "Maroon", "Green",
"Olive", "Navy", "Purple",
"Teal", "Gray", "Silver",
"Red", "Lime", "Yellow",
"Blue", "Fuchsia", "Aqua",
"White"
};
// Устанавливаем режим работы как раскрывающийся список
this.DropDownStyle = ComboBoxStyle.DropDownList;
// Цветные прямоугольники в списке будет отрисовывать владелец
this.DrawMode = DrawMode.OwnerDrawFixed;
// Устанавливаем высоту элементов списка,
// равную высоте унаследованного системного шрифта
this.ItemHeight = this.Font.Height;
}
// Свойство чтения/установки цвета
public Color Color
{
get { return Color.FromName(this.SelectedItem.ToString()); }
set
{
// Ищем переданный цвет и позиционируем список
this.SelectedItem = value.Name;
/*// Либо вот такой код - вместо предыдущей строки!!!
int index = this.FindStringExact(value.Name);
if (index != -1)
this.SelectedIndex = index;
//*/
}
}
// Переопределяем событие списка, требующее перерисовки элемента
protected override void OnDrawItem(DrawItemEventArgs e)
{
// Определяем контекст устройства
Graphics gr = e.Graphics;
// Вычисляем размеры для прямоугольника самого цвета
// как левая верхняя точка привязки, ширина, высота
// по параметрам элемента списка
Rectangle rectColor = new Rectangle(e.Bounds.Left,
e.Bounds.Top,
2 * e.Bounds.Height,
e.Bounds.Height);
// Раздувает прямоугольник указанным количеством
rectColor.Inflate(-1, -1);
// Вычисляем размеры для прямоугольника названия цвета
// как левая верхняя точка привязки, ширина, высота
Rectangle rectText = new Rectangle(e.Bounds.Left +
2 * e.Bounds.Height,
e.Bounds.Top,
e.Bounds.Width - 2 * e.Bounds.Height,
e.Bounds.Height);
// Рисуем фон заданным цветом
e.DrawBackground();// Нацелились на фон
gr.DrawRectangle(Pens.Black, rectColor);// Рамка
gr.FillRectangle(
new SolidBrush(Color.FromName
(this.Items[e.Index].ToString())),
rectColor);// Заливка
// Рисуем название цвета
gr.DrawString(this.Items[e.Index].ToString(), base.Font,
new SolidBrush(e.ForeColor), rectText);
}
}
}
Листинг
16.16 .
Код выбора цвета шрифта в файле ColorComboBox.cs