Опубликован: 25.03.2010 | Доступ: свободный | Студентов: 1447 / 158 | Оценка: 4.31 / 4.00 | Длительность: 25:42:00
Лекция 13:

Класс Control и стандартные элементы управления (обзор)

Контейнер изображений ImageList

Многие классы не являются элементами управления как таковыми, а предназначены для хранения множества объектов и управления ими. Такие классы представляют собой контейнеры объектов и являются специализированными массивами.

ImageList - это набор объектов Image, включающий в себя растровые рисунки и и метафайлы (Иконки) одного размера и глубины цвета. Основным свойством ImageList является объект Images типа ImageList.ImageCollection, который имеет ряд методов, в том числе Add() для добавления рисунков в коллекцию.

Пусть в текущем с приложением каталоге имеются два растровых изображения MyPicture1.bmp и MyPicture2.bmp, которые нужно упаковать в контейнер. Фрагмент кода программы может выглядеть так

using System.Windows.Forms;
...
// Создаем пустую коллекцию рисунков
ImageList imglst = new ImageList();
// Наполняем коллекцию рисунками
Bitmap bmp = new Bitmap("MyPicture1.bmp");// Загрузили первый рисунок
imglst.Images.Add("key1", bmp); // Пометили и отдали в коллекцию
bmp = new Bitmap("MyPicture2.bmp");// Загрузили второй рисунок
imglst.Images.Add("key2", bmp); // Пометили и отдали в коллекцию
...      
// Где-то в программе используем рисунки, сохраненные в коллекции
Bitmap bmp1, bmp2;
bmp1 = (Bitmap)imglst.Images[0]; // Извлекли по индексу
bmp2 = (Bitmap)imglst.Images["key2"];// Извлекли по ключу
Листинг 13.5 .

using System;
using System.Drawing;
using System.Windows.Forms;
    
class MyClass : Form
{
    ImageList imageList;
    
    public MyClass()
    {
        this.Icon = new Icon("1.ICO");
        this.Text = "Графическое окно";
    
        imageList = new ImageList();
        imageList.Images.Add("bmp", 
    Image.FromFile("Photo.bmp"));
        imageList.Images.Add("jpg", 
    Image.FromFile("Photo.jpg"));
        imageList.Images.Add("png", 
    Image.FromFile("Photo.png"));
        int width = 250;
        imageList.ImageSize = new Size(width, width / 4 * 3);
    
        this.Click += new EventHandler(MyClass_Click);
    }
    
    void MyClass_Click(object sender, EventArgs e)
    {
        // Получаем указатель на холст формы
        Graphics graphics = Graphics.FromHwnd(this.Handle);
    
        // Цикл для листания рисунков
        for (int count = 0; count < imageList.Images.Count; count++)
        {
            // Рисуем изображение на холсте формы
            imageList.Draw(graphics, new Point(0, 0), count);
    
            // Инициируем перерисовку формы (одно из предложенных)
            Application.DoEvents();
            //this.Invalidate();
    
            // Усыпляем поток на две секунды
            System.Threading.Thread.Sleep(2000);
        }
    }
}
Листинг 13.6 .

Контейнер всплывающих подсказок ToolTip

Класс ToolTip не является элементом управления, но тесно взаимодействует с ними. Он хранит всплывающие подсказки для элементов управления, которые обычно появляются, когда на элемент управления наводится курсор мыши.

Сначала в конструкторе формы нужно создать экземпляр класса ToolTip, затем каждому (если нужно) элементу управления привязать всплывающую подсказку с помощью экземплярного метода ToolTip.SetToolTip().

// Создаем элементы управления
Button btn1 = new Button();
Button btn2 = new Button();
CheckBox check1 = new CheckBox();
CheckBox check2 = new CheckBox();
TextBox txt = new TextBox();
    
// Настраиваем элементы управления
btn1.Location = new Point(5, 50);
btn2.Location = new Point(20, 50);
check1.Text = "Флажок 1";
//..........................
    
// Создаем экземпляр контейнера ToolTip
ToolTip tips = new ToolTip();
// Привязываем посказки к одному 
// или нескольким элементам управления
tips.SetToolTip(btn1, "Это кнопка OK");
tips.SetToolTip(btn2, "Это кнопка Cancel");
tips.SetToolTip(check1, "Это флажок 1");
tips.SetToolTip(check2, "Это флажок 2");
tips.SetToolTip(txt, "Это текстовое поле");
//...........................
Листинг 13.7.

В классе ToolTip имеется несколько свойств, настраивающих контейнер всплывающих подсказок. Вот некоторые из них

  • Active - устанавливает или получает булево значение текущей активности подсказки (включает/отключает подсказку)
  • AutomaticDelay - устанавливает или получает время (в миллисекундах), которое подсказка при появлении держится на экране
  • InitialDelay - устанавливает или получает время (в миллисекундах), в течение которого курсор должен находиться над элементом управления, чтобы подсказка появилась
  • AutoPopDelay - если в течение этого времени курсор задержится на элементе управления, то подсказка для этого элемента больше появляться не будет
  • ReshowDelay - устанавливает или получает отрезок времени, который должен пройти, чтобы новая подсказка могла активизироваться при перемещении курсора с одного элемента управления на другой
Максим Филатов
Максим Филатов

Прошел курс. Получил код Dreamspark. Ввожу код на сайте, пишет:

Срок действия этого кода проверки уже истек. Проверьте, правильно ли введен код. У вас осталось две попытки. Вы также можете выбрать другой способ проверки или предоставить соответствующие документы, подтверждающие ваш академический статус.

 

Как активировать код?