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

Стандартные элементы управления

Переключатель RadioButton

Этот элемент управления традиционно применяется для работы в составе группы таких же элементов с целью дать пользователю возможность выбора только одного из взаимоисключающих вариантов. Он также, как и флажок, имеет свойство Appearance, позволяющее изменить его визуальное представление, и свойство CheckAlign для изменения взаимного положения маркера и текста. Как и у флажка, у радиокнопки есть булево свойство Checked, отслеживающее или устанавливающее текущее состояние, при изменении которого генерируется событие CheckedChanged.

Если радиокнопка включена, то щелчок пользователя на ней ее состояние не изменит, но сработает событие Click, наследуемое от класса Control. Если кнопка выключена и свойство AutoCheck установлено в true (по умолчанию), то щелчок пользователя на ней переключит ее состояние на включено, а все другие переключатели группы выключаться. Обычно родителем для группы радиокнопок используют элемент управления GroupBox, хотя родителем может выступать Form, Panel и любой другой элемент управления, имеющий коллекцию Controls, наследуемую от класса Control и порожденную классом Control.ControlCollection.

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

// Файл Program.cs
namespace Test
{
    // Инструкции могут располагаться и внутри пространства имен
    using System; 
    using System.Drawing;
    using System.Windows.Forms;
    
    // Класс приложения
    class MyClass : Form
    {
        public MyClass()
        {
            // Текст заголовка окна
            this.Text = "Работа радиокнопок";
    
            // Локальный массив стандартных цветов
            const int ROWS = 7, COLS = 3;
            Object[,] colors = new Object[ROWS, COLS]
                {
                {Color.Red,     "Красный",   "Каждый" },
                {Color.Orange,  "Оранжевый", "Охотник"},
                {Color.Yellow,  "Желтый",    "Желает" },
                {Color.Green,   "Зеленый",   "Знать"  },
                {Color.Blue,    "Голубой",   "Где"    },
                {Color.DarkBlue,"Синий",     "Сидит"  },
                {Color.Violet,  "Фиолетовый", "Фазан"  }
                };
    
            // Порождаем группу радиокнопок и отдаем их форме
            // Используем размер шрифта для величины отступа
            int y = Font.Height;
            int x = y;  // Отступ от левого края 
                        // клиентской области родителя (формы)
            for (int i = 0; i < ROWS; i++)
            {
                RadioButton radio = new RadioButton();// Создали
                radio.Parent = this; // Отдали родителю (форме)
                // Настраиваем, пока ссылаемся на отданный объект
                radio.Location = new Point(x, y);   // Позиционировали
                // Формируем надпись
                String str = String.Format("{0, -11}", 
			((Color)colors[i, 0]).Name);
                str += String.Format("-{0, -9}", 
			(String)colors[i, 1]);
                str += String.Format("  ({0})", 
			(String)colors[i, 2]);
                radio.Text = str;
                radio.AutoSize = true; // Подстраивать размер под текст
                radio.Tag = colors[i, 0]; // Сохраняем локальную ссылку
                // на цвет для передачи обработчику
                y += radio.Height;  // Координата для следующей радиокнопки
                // Подписываем переключатель на событие CheckedChanged
                // Для всех радиокнопок будет один обработчик
                radio.CheckedChanged += RadioButtonOnCheckedChanged;
                radio.Font = new Font("Arial", 10);// Назначили свой шрифт
            }
        }
    
        void RadioButtonOnCheckedChanged(object sender, EventArgs e)
        {
            if (sender is RadioButton)
            {
                // Приводим типы, чтобы добыть свойство Tag
                RadioButton radio = (RadioButton)sender;
    
                this.BackColor = (Color)radio.Tag;
            }
        }
    }
    
    // Запуск
    class Program
    {
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.Run(new MyClass());
        }
    }
}
Листинг 15.1.

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

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

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

 

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