Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка рус / методичка по учебной практики_18.05.2015.docx
Скачиваний:
150
Добавлен:
21.02.2016
Размер:
11.65 Mб
Скачать

5.3. Область видимости

Переменные, объявленные в программе, имеют область видимости. Это значит, что переменная, описанная в одной части программы, необязательно будет видна в другой. Вот наиболее часто встречающиеся ситуации:

  • Переменные, описанные внутри метода, не будут видны за пределами этого метода. Например:

void MethodA ()

{

//Описываем переменную delta

int delta = 7;

}

void MethodB ()

{

//Ошибка: переменная delta в этом методе неизвестна!

int gamma = delta + 1;

}

  • Переменные, описанные внутри блока или составного оператора, видны только внутри этого блока. Например:

void Method ()

{

if (a == 7)

{

int b = a+5;

}

// Ошибка: переменная b здесь уже неизвестна!

MessageBox.Show(b.ToString());

}

  • Переменные, описанные внутри класса, являются глобальными и доступны для всех методов этого класса, например:

class Form1: Form

{

int a = 5;

void Method ()

{

//Переменная а здесь действительна

MessageBox.Show (a.ToString());

}

}

5.4 Операция is и as

Часто бывает удобно переменные разных классов записать в один список, чтобы было легче его отрабатывать. Чтобы проверить к какому классу принадлежит какой-либо объект, можно использовать оператор is : он возвращает истину, если объект принадлежит указанному классу. Пример:

Button b = new Button ();

if (b is Button)

MessageBox.Show( Это кнопка! ” );

else

MessageBox.Show( “Это что-то другое…” );

Как правило, в общих списках объекты хранятся в «обезличенном» состоянии, так, чтобы у всех у них был лишь минимальный общий для всех набор методов и свойств. Для того, чтобы получить доступ к расширенным свойствам объекта, нужно привести его к исходному классу с помощью операции приведения as:

(someObject as Button).Text = Это кнопка!;

Следует помнить, что операция приведения сработает только в том случае, если объект изначально принадлежит тому классу, к которому его пытаются привести (или совместим с ним), в противном случае оператор as выбросит исключение и остановит выполнение программы. Поэтому более безопасный подход состоит в комбинированном применении операторов as и is: сначала проверяем совместимость объекта класса, и только потом выполняем операцию приведения:

if (someObject is Button)

(someObject as Button).Text = Это кнопка!”;

В качестве практического примера использования этих операций рассмотрим пример программы, которая перебирает все элементы управления на форме, и у кнопок (но не у других элементов управления!) заменяет текст на пять звездочек «*****»:

private void Form1_Load (object sender, EventArgs e)

{

//Перебираем все элементы управления

foreach (Control c in this.Controls)

if (c is Button) //Кнопка?

(c as Button).Text = “*****”; //Да!

}

5.5 Сведения, передаваемые в событие

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

Например, при щелчке кнопки мыши на объекте возникает событие MouseClick. Для этого события параметр е содержит целый ряд переменных, которые позволяют узнать информацию о нажатии:

  • Button – какая кнопка была нажата;

  • Clicks – сколько раз была нажата и отпущена кнопка мыши;

  • Location – координаты точки, на которую указывал курсор в момент нажатия, в виде объекта класса Point

  • X и Y – те же координаты, только в виде отдельных переменных.

Индивидуальные задания

Если в индивидуальном задании используется элемент Panel, измените его цвет, чтобы он визуально выделялся на форме. Если используется элемент Label, не забудьте присвоить ему какой-либо текст, иначе он не будет виден на форме.

  1. Разработать программу, динамически порождающую на окне кнопки. Левый верхний угол кнопки определяется местоположением курсора при щелчке. Вывести надпись на кнопке с координатами ее левого верхнего угла.

  2. Разработать программу, динамически порождающую на окне кнопки и поля ввода. Левый верхний угол элемента управления определяется местоположением курсора при щелчке. Кнопка порождается, если курсор находится в левой половине окна, в ином случае порождается поле ввода.

  3. На форме размещен элемент управления Panel. Написать программу, которая при щелчке мыши на элементе управления Panel добавляет в него кнопки Button, а при щелчке на форме в нее добавляются поля ввода TextBox.

  4. Написать программу, добавляющую на форму кнопки. Кнопки добавляются в узлы прямоугольной сетки. Расстояния между кнопками и расстояния между крайней кнопкой и границей окна должны быть равны как по горизонтали, так и по вертикали.

  5. Разработать программу, при щелчке мыши динамически порождающую на окне кнопки или поля ввода. Каждый четный элемент управления является кнопкой, нечетный – полем ввода. Левый верхний угол кнопки определяется местоположением курсора при щелчке. Для поля ввода положение курсора определяет координаты правого нижнего угла.

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

  7. Создать программу, добавляющую различные элементы управления на форму и на панель Panel. Тип элементов управления выбирается случайным образом. Предусмотреть возможность вывода информации о количестве элементов по типам и информацию о расположении элементов.

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

  9. Написать программу, динамически порождающую на окне кнопки или метки. Левый верхний угол элемента управления определяется местоположением курсора при щелчке. При нажатии правой кнопки мыши на форме с нее удаляются все кнопки.

  10. Разработать программу с двумя кнопками на форме. При нажатии на первую на форму добавляется одна панель Panel. При нажатии на вторую кнопку в каждую панель добавляется поле ввода.

  11. Разработать программу с двумя кнопками на форме. При нажатии на первую на форму добавляется одна кнопка или поле ввода. При нажатии на вторую кнопку каждое поле увеличивается по вертикали в два раза.

  12. Написать программу с кнопкой и тремя полям ввода. При нажатии на кнопку программа анализирует содержимое первого поля и динамически порождает элемент управления. Если в первом поле ввода содержится буква «К», то на форму добавляется кнопка, если «П» - после ввода, если «М» - метка. Во втором и третьем поле ввода содержатся координаты левого верхнего угла будущего элемента управления.

  13. Разработать программу, добавляющую на форму метки с текстом. Местоположение и размеры меток определяются в программе динамически через поля ввода. В заголовок окна, анализируя размер всех меток, вывести количество маленьких и больших меток. Маленькой меткой считается метка размером менее 50 пикселей по горизонтали и по вертикали.

  14. Создать программу с двумя кнопками на форме, динамически порождающую на окне метки или поля ввода. При нажатии на первую кнопку каждая метка увеличивается по горизонтали в два раза. При нажатии на вторую кнопку каждое поле уменьшается по вертикали в два раза.

  15. Разработать программу, динамически порождающую на окне кнопки и поля ввода. Координаты элемента управления определяется случайным образом. Элементы управления не должны накладываться друг на друга. Если нет возможности добавить элемент управления (нет места для размещения элемента), то предусмотреть вывод информации об этом.

  16. Разработать программу, динамически порождающую на окне кнопки и поля ввода. Координаты элемента управления определяется случайным образом. При наведении курсора на элемент управления он должен быть удален с формы.

ЛАБОРАТОРНАЯ РАБОТА №6. СТРОКИ

Цель лабораторной работы: изучить правила работы с элементом управления ListBox. Написать программу для работы со строками.