Файл: Справочник для опытных и как пособие для начинающих программистов. Компактдиск содержит исходные коды примеров из книги.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 В = С

  1. Xor 0=0

  2. Xor 0=1




  1. Xor 1=1

  2. 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;