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

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

Контейнер радиокнопок GroupBox

Этот контейнер наследует класс Control и сам является видимым элементом управления (рамка с надписью в свойстве Text ), используемым при формировании пользовательского графического интерфейса. Главное его применение - организовать согласованную работу радиокнопок. Он объединяет их в группы и все переключатели, принадлежащие одной группе, становятся взаимоисключающими. Класс GroupBox не наследует, в отличие от Form, класс ContainerControl, где переход между дочерними элементами выполняется нажатием клавиши Tab. Навигация между радиокнопками внутри GroupBox выполняется клавишами-стрелками.

Общий контейнер Panel

Этот элемент управления является (как и Form ) потомком класса ScrollableControl, поэтому имеет полосы прокрутки. Он также имеет визуальное представление и может служить контейнером элементов управления при формировании пользовательского интерфейса.

Метка Label

Она отображает нередактируемый текст, заданный в свойстве Text. Хотя метка может выводить многострочный текст, если увеличить ее размер по высоте, но она не выводит полос прокрутки, если текст не умещается в элементе управления.

Кроме текста метка может отображать объекты типа Image. Один из способов состоит в присвоении свойству Image загруженного файла, например (проект Test )

using System;
using System.Drawing;
using System.Windows.Forms;
    
namespace Test
{
    class MyClass : Form
    {
        public MyClass()
        {
            // Создание и настройка элементов управления
            Label lblBmp = new Label();
            lblBmp.Parent = this;
            lblBmp.Dock = DockStyle.Fill;
            lblBmp.Image = Image.FromFile("Photo.bmp");
            lblBmp.Tag = "Рисунок bmp";
    
            Label lblJpg = new Label();
            lblJpg.Parent = this;
            lblJpg.Dock = DockStyle.Fill;
            lblJpg.Image = Image.FromFile("Photo.jpg");
            lblJpg.Tag = "Рисунок jpg";
    
            Label lblPng = new Label();
            lblPng.Parent = this;
            lblPng.Dock = DockStyle.Fill;
            lblPng.Image = Image.FromFile("Photo.png");
            lblPng.Tag = "Рисунок png";
    
            lblBmp.BringToFront();// Меняем Z-последовательность
            this.Text = (string)lblBmp.Tag;// Заголовок окна
    
            // Подписываем на событие Click
            lblBmp.Click += new EventHandler(lbl_Click);
            lblJpg.Click += lbl_Click;
            lblPng.Click += lbl_Click;
        }
    
        void lbl_Click(object sender, EventArgs e)
        {
            Control ctrl = sender as Control;
            if (ctrl == null)
            {
                MessageBox.Show("Не могу привести типы");
                return;
            }
    
            this.Controls.Remove(ctrl);
            if (this.Controls.Count > 0)
            {
                this.Text = (string)this.Controls[0].Tag;
                this.Controls[0].BringToFront();
            }
            else
                this.Text = "Меток больше нет";
        }
    }
}
Листинг 13.8.

Файлы с картинками должны быть помещены в один каталог со сборкой, иначе нужно указать путь у файлу (абсолютный или относительный). Одна из картинок, выводимых этим кодом, будет такой (это, конечно же, опять я - любимый!)


Кроме того, в метке можно использовать изображения, созданные в качестве ресурсов и прикрепленные к исполняемому файлу программы.

Максим Филатов
Максим Филатов

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

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

 

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