Вы находитесь на странице: 1из 8

Лабораторная работа 17

Тема: Разработка приложений с графическим интерфейсом на


Windows Forms

Задание
Разработать Windows Forms приложение, включающее в себя две формы
- MainForm - главное окно, отображаемое пользователю сразу после запуска приложения
- ArrayViewerForm - окно для отображения элементов массива

Разместить на MainForm следующие компоненты:


- TextBox - поле ввода для указания пользователем размерности генерируемого массива
- Label - текстовая метка, размещаемая над полем ввода размерности массива или слева от
него. Метка должна содержать следующий текст: «Размер генерируемого массива»
- Button - кнопка, по нажатию которой будет
- генерироваться массив заданной размерности,
- открываться окно ArrayViewerForm,
- сгенерированный массив будет передаваться в ArrayViewerForm
- ArrayViewerForm будет отображать сгенерированный массив

Разместить на ArrayViewerForm следующие компоненты:


- ListBox - список для отображения элементов переданного массива
- Label - текстовая метка для вывода количества чётных элементов переданного массива. Метка
должна содержать текст «Положительных элементов: ____» (Вместо «____» должно быть
подставлено рассчитанное значение.)

Требования к именам компонентов, размещаемых на формах:


Вы обязаны задать каждому компоненту значимое имя, говорящее о назначении этого
компонента.

Ход выполнения работы


17.01 Создание нового проекта в Visual Studio

Запустите Visual Studio последней версии.


Создайте новый C# проект типа (шаблона) Windows Forms App (.NET Framework).
Название проекта: MDK0101_LR17_Familia, например MDK0101_LR17_Petrov

Скриншот окна настройки проекта:


Рисунок 17.1 - Результат выполнения этапа 1

17.02 Переименование файла Form1.cs и класса Form1

Первым делом, сразу после создания нового Windows Forms проекта потребуется изменить
название класса Form1, созданного автоматически и описывающего единственно, на текущий
момент, окно приложения, класс Form1 следует переименовать в MainForm. Важно понимать,
что не только класс From1, но и файл Form1.cs потребуется переименовать.

Переименуем файл Form1.cs в MainForm.cs


Для изменения имени файла Form1.cs потребуется найти его в панели Solution Explorer,
кликнуть по нему правой кнопкой мыши для вызова контекстного меню, после чего в
контекстном меню выбрать пункт Rename и затем ввести новое имя MainForm .
Заметка! Переименовать файл можно и без вызова контекстного меню, можно выделить файл и
нажать «F2».

Скриншот панели Solution Explorer после переименования файла Form1.cs в MainForm.cs:

Рисунок 17.2.1 - Результат выполнения этапа 2.1

Переименуем класс Form1 в MainForm


После того как файл был переименован следует перейти в него в режиме редактирования кода
и изменить имя класса Form1 на MainForm. Для этого следует выделить имя класса и щёлкнуть
по нему правой кнопкой мыши для вызова контекстного меню, в меню выбрать пункт Rename.
После чего следует начать ввод нового имени, старое автоматически будет заменяться на новое
во всех строках кода всех файлах текущего проекта.
Закончив ввод нового имени следует нажать клавишу «Enter» для того, чтобы применить
изменения.
Сохраните все изменения проекта перед тем как продолжить.

Скриншот окна Visual Studio с открытым на редактирование файлом MainForm.cs после


переименования класса Form1 в MainForm:

Рисунок 17.2.2 - Результат выполнения этапа 2.2

17.03 Создание и настройка формы ArrayViewerForm

Кликните правой кнопкой мыши по корню проекта:

В открывшемся контекстном меню выберите пункт «Add», далее подпункт «Form(Windows


Forms)». В открывшемся диалоговом окне задайте имя класса формы «ArrayViewerForm.cs».

Откройте созданную форму ArrayViewerForm на редактирование в режиме дизайнера.

Добавьте на форму ListBox - список для отображения элементов переданного массива, Label -
текстовая метка для вывода количества чётных элементов переданного массива. Метка должна
содержать текст «Положительных элементов: ____» (Вместо «____» должно быть подставлено
рассчитанное значение.)

Сохраните все изменения проекта перед тем как продолжить.

Скриншот окна Visual Studio с открытой в режиме дизайнера формы ArrayViewerForm:


Рисунок 17.3 - Результат выполнения этапа 3

17.04 Реализация метода загрузки формы ArrayViewerForm

Перейдите в режим дизайнера формы ArrayViewerForm и выделите кнопку acceptButton.


Перейдите в панель Properties и переключите (как это было неоднократно описано в
предыдущих работах) панель в режим событий и создайте обработчик для события Click.
Опишите в теле метода обработки нажатия кнопки acceptButton следующий код:

private void ArrayViewerForm_Load(object sender, EventArgs e)


{
int counter = 0;
int[] array = new int[length];

for (int i = 0; i < length; i++)


{
array[i] = randomizer.Next();
itemsListBox.Items.Add(array[i]);
if (array[i] > 0)
counter++;
}

label.Text += counter;
}

Сохраните все изменения проекта перед тем как продолжить.

Скриншот окна Visual Studio с открытым в режиме редактора кода файлом ArrayViewerForm.cs:
Рисунок 17.4 - Результат выполнения этапа 4

17.05 Создание и настройка компонентов формы MainForm

Откройте MainForm в режиме дизайнера.


Разместить на MainForm следующие компоненты:
- TextBox - поле ввода для указания пользователем размерности генерируемого массива
- Label - текстовая метка, размещаемая над полем ввода размерности массива или слева от
него. Метка должна содержать следующий текст: «Размер генерируемого массива»
- Button - кнопка, по нажатию которой будет
- генерироваться массив заданной размерности,
- открываться окно ArrayViewerForm,
- сгенерированный массив будет передаваться в ArrayViewerForm
- ArrayViewerForm будет отображать сгенерированный массив

Скриншот окна Visual Studio с открытой в режиме дизайнера формы MainForm :


Рисунок 17.5 - Результат выполнения этапа 5

17.06 Реализация метода обработки нажатия кнопки generateButton формы MainForm

Создайте обработчик события Click для кнопки Button.


Опишите в методе обработки нажатия кнопки Button следующий код:

private void generateButton_Click(object sender, EventArgs e)


{
ArrayViewerForm window;
bool isValid = isValid = int.TryParse(lengthArrayTextBox.Text, out int length);
if (!isValid)
{
MessageBox.Show("Введены невалидные данные!");
return;
}
window = new ArrayViewerForm(length);
window.Show();
}

Сохраните все изменения проекта, запустите и проверьте его работоспособность.

17.07 Полный текст кода класса MainForm из файла MainForm.cs

Листинг файла MainForm.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace MDK0101_LR17_Makushkin
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}

private void generateButton_Click(object sender, EventArgs e)


{
ArrayViewerForm window;
bool isValid = isValid = int.TryParse(lengthArrayTextBox.Text, out int length);
if (!isValid)
{
MessageBox.Show("Введены невалидные данные!");
return;
}
window = new ArrayViewerForm(length);
window.Show();
}
}
}

17.08 Полный текст кода класса ArrayViewerForm из файла ArrayViewerForm.cs

Листинг файла ArrayViewerForm.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace MDK0101_LR17_Makushkin
{
public partial class ArrayViewerForm : Form
{
Random randomizer = new Random();
int length = 0;
public ArrayViewerForm(int _length)
{
InitializeComponent();
length = _length;
}

private void ArrayViewerForm_Load(object sender, EventArgs e)


{
int counter = 0;
int[] array = new int[length];
for (int i = 0; i < length; i++)
{
array[i] = randomizer.Next(int.MinValue, int.MaxValue);
itemsListBox.Items.Add(array[i]);
if (array[i] > 0)
counter++;
}
label.Text += counter;
}
}
}

17.09 Результат работы программы

Скриншот окна запущенной программы, отображающего оба окна с данными


Рисунок 17.6 - Результат работы программы