Шаг 170.
Microsoft Visual C++ 2010. Язык С/С++.
Компоненты Windows Forms. Компоненты CheckBox и RadioButtom

    На этом шаге мы рассмотрим свойства и особенности использования этих компонентов.

    Компоненты расположены в группе Common Controls (Стандартные элементы управления) палитры компонентов. Оба используются как флажки-переключатели для предоставления возможного выбора после их работы - они выдают результат "включен/ выключен".

    Если компонент CheckBox находится в группе себе подобных, то, включив один CheckBox, можно включать и остальные и при этом ни один из них не выключится (т. е. не изменит своего состояния).

    Компонент RadioButton ведет себя по-другому: когда он находится совместно с такими же компонентами в одной группе, то не допускает, чтобы был еще включен какой-то другой RadioButton - он тут же выключается. То есть в группе компонентов RadioButton может быть включен только один из них, а остальные будут автоматически выключены.

    Оба этих компонента соответствуют математическим понятиям конъюнкции и дизъюнкции. Когда мы говорим "находится в группе", то имеется в виду, что у множества таких компонентов один родитель (например, одна панель). Если одно множество RadioButton находится на одной панели, а другое - на своей собственной, то включение такой кнопки на панели А не повлияет на состояние такой же кнопки на панели В, поскольку у них разные родители. Поэтому если необходимо, чтобы кнопки RadioButton обрабатывали несколько непересекающихся ситуаций, то такие кнопки нужно разместить на разных панелях или в других групповых контейнерах.

    Перечень свойств CheckBox, отображенных в окне Properties (Свойства), представлен на рисунке 1, а свойств RadioButton - на рисунке 2.


Рис.1. Свойства CheckBox


Рис.2. Свойства RadioButton

    Рассмотрим некоторые свойства этих компонентов.

    Примеры работы переключателей показаны на рисунках 4 и 5, текст обработчиков событий - в примере ниже.


Рис.4. Форма приложения в режиме проектирования

    Текст обработчиков:

private: System::Void checkBox1_CheckStateChanged(System::Object^  sender, 
      System::EventArgs^  e) {
	 if ( checkBox1->CheckState == CheckState::Checked )
		 panel1->BackColor = Color::Aqua; 
	 if ( checkBox1->CheckState == CheckState::Unchecked )
		 panel1->BackColor = Color::Blue; 
	 if ( checkBox1->CheckState == CheckState::Indeterminate)
		 panel1->BackColor = Color::Bisque;
	 }
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
	 Close();
	}
private: System::Void checkBox2_CheckStateChanged(System::Object^  sender, 
      System::EventArgs^  e) {
	 if ( checkBox2->CheckState == CheckState::Checked )
		 panel2->BackColor = Color::Aquamarine; 
	 if ( checkBox2->CheckState == CheckState::Unchecked )
		 panel2->BackColor = Color::Azure; 
	 if ( checkBox2->CheckState == CheckState::Indeterminate )
		 panel2->BackColor = Color::Beige;
 }
private: System::Void radioButton1_CheckedChanged(System::Object^  sender, 
      System::EventArgs^  e) {
	 pictureBox2->Visible = false;
	 pictureBox1->Visible = true;
		 }
private: System::Void radioButton2_CheckedChanged(System::Object^  sender, 
      System::EventArgs^  e) {
	 pictureBox2->Visible = true;
	 pictureBox1->Visible = false;
 }
Архив проекта можно взять здесь.


Рис.5. Результат работы приложения

    На следующем шаге мы рассмотрим компонент GroupBox.




Предыдущий шаг Содержание Следующий шаг