Создать обработчики событий для остальных пунктов меню

ЛАБОРАТОРНАЯ РАБОТА 3

Создание Windows-приложения для обработки матрицы

Цель работы: научиться создавать элементы интерфейсов для приложения и писать простой обработчик событий на C++ для приложения Windows Forms, работающего под управления .NET Framework.

Методические указания к лабораторной работе

В лабораторной работе необходимо научиться использовать элементами управления, такими как Надписи (label), Текстовые поля (textbox), Кнопки (Button) и Меню (MenuStrip) для разработки программного интерфейса. Лабораторная работа состоит из двух заданий.

Задание 1. Создать на форме меню для ввода и обработки матрицы.

В лабораторной работе необходимо создать форму с меню, предназначенного формировать датчиком случайных чисел матрицу размером 5х5, обрабатывать эту матрицу и выводить результаты вычислений. Кроме этого предусмотрим вывод информации о разработчике на экран. В качестве примера обработки определим максимальное значение из элементов матрицы. Для этого:

Создать новый проект Windows Forms с именем form_lab3.cpp.

Разместить на форме элементы управления и настроить их свойства

Сначала настроим свойства формы: введем заголовок формы в свойство Text, увеличим ширину формы и зададим цвет формы, изменив свойство BackColor, например,на цвет LightGrey из списка Web.

Поместить на форму компонент MenuStrip (Меню). При этом на форме появится светлый прямоугольник с текстом: «Вводить здесь». Щелкнув мышью по прямоугольнику, вы перейдете в режим ввода названия пункта меню. Например, назовем первый пункт: «Выбор цвета формы». Ниже откроется прямоугольник для ввода пунктов подменю, а правее: названия следующего пункта меню. Таким образом, создайте первый пункт меню следующего вида:

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

this->BackColor=Color::Red;

Откомпилируйте проект и проверьте работу первого пункта меню.

Добавим следующий пункт меню, назвав его «Работа с матрицей», а для него создадим два подпункта: «Формирование» и «Обработка». Меню примет вид:

 

Закончим формирование меню, добавив третий пункт «О программе», в котором создадим подпункты: «Сведения о разработчике» и «Задание по обработке».И последний пункт будет называться «Выход».

Перетащим на форму Надпись (label) для вывода результатов обработки и разместим её на середине формы. Форма примет вид:

Создать обработчики событий для остальных пунктов меню

Перейдем к написанию обработчиков событий для пункта меню «Работа с матрицей». Напишем две функции: для формирования матрицы датчиком случайных чисел и для поиска максимального значения и поместим их в библиотечный файл с исходными кодами. Для этого щелкнем правой кнопкой мыши в Обозревателе решений на папке Файлы исходного кода, далее вызовем меню правой кнопкой мыши. В появившемся меню выберем: Добавить -> Создать Элемент. В открывшемся окне вписываем название файла – Matrica.cpp и нажимаем Добавить.

В файл поместим следующий код:

#pragma once

#include "stdafx.h"

#include "stdlib.h" //библиотека содержит функцию rand()

void form(int matr[5][5])

{

int i,j;

for (i=0;i<5;i++)

for(j=0;j<5;j++)

matr[i][j]=rand()%100-40;

}

int Maximum(int matr[5][5])

{int i,j;int m=0;

for (i=0;i<5;i++)

for(j=0;j<5;j++)

if(matr[i][j]>m) m=matr[i][j];

return m;

}

Следующим шагом нужно добавить заголовочный файл Matrica.h в проект. Для этого щелкнем правой кнопкой мыши в Обозревателе решений на папке Заголовочные файлы, далее меню Добавить -> Создать Элемент, вписываем название файла – Matrica.h и нажимаем Добавить. В данном файле будет содержаться прототипы (заголовки) разработанных функций и описание общих переменных. Добавляем туда следующий исходный код:

static int A[5][5]; //Описание матрицы

void form(int matr[5][5]);

int Maximum(int matr[5][5]);

Далее подключаем этот файл к проекту с помошью директивы #include – Открываем главный файл проекта:form_lab3.cpp и добавляем туда после строчки #include "stdafx.h" следующий код:

#include "Matrica.h"

Теперь наш заголовочный файл подключен к проекту и все готово к созданию обработчиков событий.

Приведите обработчики событий выбора пунктов меню «форматирование» и «обработка» к следующему виду: //формирование матрицы датчиком случайных чисел

private: System::Void формированиеToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {

int i,j; System::String^s=gcnew String("");

form(A); //вызов функции Form()

// Вывод матрицы в окно MessageBox

for (i=0;i<5;i++)

{

for(j=0;j<5;j++)

s=s+System::Convert::ToString(A[i][j])+"\t";

s=s+"\r\n";

}

MessageBox::Show(s," Матрица");

}

 

//обработка матрицы

private: System::Void обработкаToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {

int max;

max=Maximum(A); //вызов функции Maximum()

label1->Text="Значение максимума=" +System::Convert::ToString(max);

}

Используя окно сообщений MessageBox, создадим обработчики событий для вывода информации о разработчике и задания по обработке матрицы.

Процедуру обработки события «выход» приведем к следующему виду:

private: System::Void выходToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {

this->Close();

}

Откомпилируйте проект и проверьте работу всех пунктов меню.

Задание 2. Обработка массива по индивидуальному заданию.

Напишите программу на языке С++ для обработки матрицы по варианту, выбранному из методических указания к лабораторной работе №11.