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

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

 

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

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