Опубликован: 25.03.2010 | Уровень: для всех | Доступ: платный
Лекция 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. Ввожу код на сайте, пишет:

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

 

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

Денис Пашков
Денис Пашков
Россия
Татьяна Ковалюк
Татьяна Ковалюк
Украина, Киев, Киевский политехнический институт, 1974