Файл: Справочник для опытных и как пособие для начинающих программистов. Компактдиск содержит исходные коды примеров из книги.doc
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.01.2024
Просмотров: 916
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
namespace CheckBox
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Text = "Флажок CheckBox";
checkBox1.Text = "Полужирный"; checkBox1.Focus();
label1.Text = "Выбери стиль шрифта";
label1.TextAlign = ContentAlignment.MiddleCenter;
label1.Font = new System.Drawing.Font("Courier New", 14.0F);
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{ // Изменение состояния флажка на противоположное
if (checkBox1.Checked == true) label1.Font =
new Font("Courier New", 14.0F, FontStyle.Bold);
if (checkBox1.Checked == false) label1.Font =
new Font("Courier New", 14.0F, FontStyle.Regular);
}
}
}
Сразу после вызова процедуры InitializeComponent задаем начальные значения некоторых свойств объектов Form1 (посредством ссылки this), label1 и checkBox1. Так, тексту флажка, выводимого с правой стороны, присваиваем значение "Полужирный". Кроме того, при старте программы фокус должен находиться на флажке (checkBox1.Focus(),;), в этом случае пользователь может изменять установку флажка даже клавишей <Пробел>.
Текст метки — "Выбери стиль шрифта", выравнивание метки TextAlign задаем посередине и по центру (MiddleCenter) относительно всего того места, что предназначено для метки. Задаем шрифт метки Courier New (в этом шрифте все буквы имеют одинаковую ширину) размером 14 пунктов.
Изменение состояния флажка соответствует событию CheckedChanged. Чтобы получить пустой обработчик события CheckedChanged, следует дважды щелкнуть на элементе checkBox1 вкладки Form1.cs [Design]. Между соответствующими строчками следует записать (см. текст программы): если флажок установлен (т. е. содержит "галочку") Checked = true, то для метки label1 устанавливается тот же шрифт Courier New, 14 пунктов, но Bold, т. е. полужирный.
Далее — следующая строчка кода: если флажок не установлен, т. е. checkBox1.Checked = false, то шрифт устанавливается Regular, Т.е. обычный. Очень часто эту ситуацию программируют, используя ключевое слово else (иначе), однако это выражение будет выглядеть более выразительно и понятно так, как написали мы.
Программа написана, нажмите клавишу <F5>. Проверьте работоспособность программы. В рабочем состоянии она должна работать примерно так, как показано на рис. 1.11.
Рис. 1.11. Фрагмент работы программы управления стилем шрифта
Убедиться в работоспособности программы можно, открыв решение CheckBox1.sin в папке CheckBox1.
Пример 6. Побитовый оператор "исключающее ИЛИ"
Несколько изменим предыдущую программу в части обработки события
checkedchanged (Изменение состояния флажка). Вместо двух условий if () напишем один оператор:
Label1.Font = new Font("Courier New", 14.0F,
Label1.Font.Style ^ FontStyle.Bold);
Здесь каждый раз при изменении состояния флажка значение параметра label1.Font.style сравнивается с одним и тем же значением Fontstyle.Bold. Поскольку между ними стоит побитовый оператор ^ (исключающее ИЛИ), он будет назначать Bold, если текущее состояние lаЬеl1.Font.style "не Bold". А если label1. Font. style пребывает в состоянии "Bold", то оператор ^ будет назначать состояние "не Bold". Этот оператор еще называют логическим xor.
Таблица истинности логического xor такова:
A Xor В = С
-
Xor 0=0 -
Xor 0=1
-
Xor 1=1 -
Xor 1=0
В нашем случае мы имеем всегда B = 1 (Fontstyle.Bold), а A (label1.Font.style) попеременно то Bold, то Regular (т. е. "не Bold"). Таким образом, оператор ^ всегда будет назначать противоположное тому, что записано в label1.Font.Style.
Как видно, применение побитового оператора привело к существенному уменьшению количества программного кода. Использование побитовых операторов может значительно упростить написание программ со сложной логикой.
Посмотрите, как работает программа, нажав клавишу <F5>.
Теперь добавим в форму еще один элемент управления CheckBox. Мы собираемся управлять стилем шрифта FontStyle двумя флажками. Один, как и прежде, задает полужирный стиль Bold или обычный Regular, а второй задает наклонный italic или возвращает в Regular. Текст новой программы приведен в листинге 1.5.
Листинг 1,5. Усовершенствованный программный код
// Побитовый оператор "^" - исключающее ИЛИ
using System;
using System.Drawing;
using System.Windows.Forms;
// Другие директивы using удалены, поскольку они не используются
// в данной программе
namespace CheckBox2
{
public partial class Form1: Form
{
public Form1 ()
{
InitializeComponent();
this.Text = "Флажок CheckBox";
checkBox1.Text = "Полужирный"; checkBox2.Text = "Наклонный";
label1.Text = "Выбери стиль шрифта";
label1.TextAlign = contentAlignment .MiddleCenter ;
label1.Font = new Font("Courier New", 14.0F);
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
Label1.Font = new Systerm.Drawing.Font(
"Courier New", 14.0F, label1.Font.Style^ Fontstyle.Bold);
}
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
Label1.Font = new System.Drawing.Font(
"Courier New", 14.0F, label1.Font.Style ^ FontStyle.Italic);
}
}
}
Как видно, здесь принципиально ничего нового нет, только лишь добавлена обработка события изменения состояния флажка checkedchanged для checkBox2. фрагмент работы программы можно увидеть на рис. 1.12.
Рис. 1.12. Фрагмент работы усовершенствованной программы
Убедиться в работоспособности программы можно, открыв решение CheckBox2.sIn в папке CheckBox2.
Пример 7. Вкладки TabControlи переключатели RadioButton
Вкладки используются для организации управления и оптимального расположения экранного пространства. Выразительным примером использования вкладок является диалоговое окно Свойства обозревателя Internet Explorer. То есть если требуется отобразить большое количество управляемой информации, то весьма уместно использовать вкладки TabControl.
Поставим задачу написать программу, позволяющую выбрать текст из двух вариантов, задать цвет и размер шрифта этого текста на трех вкладках TabControl с использованием переключателей RadioButton.
Фрагмент работы программы приведен на рис. 1.13.
Рис. 1.13. Программа с переключателями и вкладками
Программируя поставленную задачу, создадим новый проект Windows Forms Application С#, назовем его, например, ВкладкиTabControl, получим стандартную форму. Затем, используя панель элементов Toolbox, в форму перетащим мышью элемент управления TabControl. Как видно, по умолчанию имеем две вкладки, а поусловию задачи, как показано на рис. 1.13, три вкладки. Добавить третью вкладку можно в конструкторе формы, а можно программно.
Вначале покажем, как добавить третью вкладку в конструкторе. Для этого в свойствах (окно Properties) элемента управления TabControl1 выбираем свойство TabPages, в результате попадаем в диалоговое окно TabPage Collection Edit, где добавляем (кнопка Add) третью вкладку (первые две присутствуют по умолчанию) Эти вкладки нумеруются от нуля, т. е. третья вкладка будет распознаваться как TabPages(2). Название каждой вкладки" будем указывать в программном коде.
Для того чтобы читатель в большей степени мог управлять всем процессом, мы покажем, как добавить третью вкладку не в конструкторе, а в программном коде сразу после вызова процедуры InitializeComponent (листинг 1.6). Однако, прежде чем перейти на вкладку программного кода, для каждой вкладки выбираем из панели Toolbox по два переключателя RadioButton, а в форму перетаскиваем метку Label. Теперь через щелчок правой кнопкой мыши в пределах формы переключаемся на редактирование программного кода.
Листинг 1.6. Использование вкладок и переключателей
// Программа, позволяющая выбрать текст из двух вариантов, задать цвет
//и размер шрифта для этого текста на трех вкладках TabControl
// с использованием переключателей RadioButton
using System;
using System. Drawing;
us ing System.Windows.Forms;
// Другие директивы using удалены, поскольку они не используются
//вданной программе
namespace ВкладкиTabControl
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// Создание третьей вкладки "программно":
System.Windows.Forms.TabPage tabPage3 =
new System.Windows.Forms.TabPage();
tabPage3.UseVisualStyleBackColor = true;
// Добавление третьей вкладки в существующий набор
// вкладок tabControl1:
this. tabControl1.Controls. Add (tabPage3);
//this.Visible = false;
// Добавление переключателей 5 и 6 на третью вкладку:
tаbРаgеЗ .Controls.Add(this.radioButton5);
tabPage3.Controls.Add(this.radioButton6);
// Расположение переключателей 5 и 6:
this.radioButton5.Location = new System.Drawing.Point(20, 15);
this.radioButton6.Location = new System.Drawing.Point(20, 58);
this.Text = "Какая улыбка Вам ближе";
// Задаем названия вкладок:
tabControl1.TabPages[0].Text = "Текст";
tabControl1.TabPages[1].Text = "Цвет";
tabControl1.TabPages[2].Text = "Размер";
// Эта пара переключателей изменяет текст:
radioButton1.Text =
"Восхищенная, сочувственная,\nскромно-смущенная";
radioButton2.Text = "Нежная улыбка, ехидная, бес" +
"стыжая,\nподленькая, снисходительная";
// или
//radioButton.2. Text = "Нежная улыбка, бесстыжая," +
//Environment.NewLine + "подленькая, снисходительная";
// Эта пара переключателей изменяет цвет текста:
radioButton3.Text = "Красный";
radioButton4.Text = "Синий";
// Эта пара переключателей изменяет размет шрифта:
radioButton5.Text = "11 пунктов";
radioButton6.Text = "13 пунктов";
label1.Text = radioButton1.Text;
}
// Далее - обработка событий изменения состояния шести переключателей
private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
Label1. Text = radioButton1 .Text;
}
private void radioButton2_CheckedChanged(object sender, EventArgs e) ,
{ label1.Text = radioButton2.Text; }
private void radioButton3_CheckedChanged(object sender, EventArgs e)
{ label1.ForeColor = Color.Red; }
private void radioButton4_CheckedChanged(object sender, EventArgs e)
{ label1.ForeColor = Color.Blue; }
private void radioButton5_CheckedChanged(object sender, EventArgs e)
{ label1.Font = new Font(label1.Font.Name, 11); }
private void radioButton6_CheckedChanged(object sender, EventArgs e)
{ label1.Font = new Font(label1.Font.Name, 13); }
}
}
Как видно из текста программы, сразу после вызова процедуры InitializeComponent (этот программный код можно было бы задать при обработке события загрузки формы Form1_Load) создаем "программно" третью вкладку и добавляем ее в набор вкладок tabControl1, созданный в конструкторе. Далее "привязываем" пятый и шестой переключатели к третьей вкладке.
Дальнейшие установки очевидны и не требуют дополнительных комментариев. Заметим, что каждая пара переключателей, расположенных на каком-либо элементе управления (в данном случае на различных вкладках), "отрицают" друг друга, т. е. если пользователь выбрал один, то другой переходит в противоположное состояние.
Отслеживать изменения состояния переключателей удобно с помощью обработки событий переключателей checkchanged (см. листинг 1.6). Чтобы получить пустой обработчик этого события в конструкторе формы, следует дважды щелкнуть на соответствующем переключателе и таким образом запрограммировать изменения состояния переключателей.
Убедиться в работоспособности программы можно, открыв решение ВкладкиTabControl.sln в папке ВкладкиTabControl.
Пример 8. Свойство Visibleи всплывающая подсказка ToolTipв стиле Balloon
Продемонстрируем возможности свойства visible (Видимый). Программа пишет в метку Label некоторый текст, а пользователь с помощью командной кнопки делает этот текст невидимым, а затем опять видимым и т. д. При зависании мыши над кнопкой появляется подсказка "Нажми меня".
Запускаем Visual Studio 2010, далее выбираем пункты меню File | New | Project | Windows Forms Application C# и нажимаем кнопку ОК. Затем из панели элементов управления Toolbox в форму перетаскиваем метку Label, кнопку Button и всплывающую подсказку ToolTip. Только в этом случае каждый элемент управления в форме (включая форму) получает свойство ToolTip on Tip. Убедитесь в этом, посмотрев свойства (окно Properties) элементов управления.
Для кнопки button1 напротив свойства ToolTip on Tip мы могли бы написать "Нажми меня". Однако я предлагаю написать это непосредственно в программном коде. В этом случае программист не будет долго искать соответствующее свойство, когда станет применять данный фрагмент в своей новой программе!
Перейдем на вкладку программного кода— щелчок правой кнопкой мыши в пределах формы и выбор команды View Code. Окончательный текст программы представлен в листинге 1.7.
Листинг 1.7. Свойство visible и всплывающая подсказка ToolTip
II Программа пишет в метку Label некоторый текст, а пользователь
// с помощью командной кнопки делает этот текст либо видимым, либо
//невидимым. Здесь использовано свойство Visible. При зависании мыши
// над кнопкой появляется подсказка "Нажми меня" (свойство ToolTip).
Using System;
Using System.Drawing;