Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР9.doc
Скачиваний:
24
Добавлен:
21.09.2019
Размер:
4.54 Mб
Скачать

Панель GroupBox

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

Приведенная в листинге 9.4 программа запрашивает у пользователя, массив какой длины он хочет создать, и создает целочисленный массив с помощью генератора случайных чисел. Пользователь может выбрать диапазон значений элементов: либо [-10; 10], либо [-100; 100]. После создания массива можно вычислить его максимальный элемент и (или) количество положительных элементов. Окно приложения показано на рис. 9.9. Для удобства имена (свойство Name) большинства компонентов изменены, как указано на рисунке. Переключатели размещены на панели типа GroupBox. Установлено свойство Checked компонента radioButton1, очищены все поля ввода, а для полей maxtextBox и numPosittextBox установлено свойство ReadOnly (только для чтения).

Рис. 9.9 - Окно приложения для вычислений в массиве

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

Листинг 9.4. Вычисления в массиве

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.Data;

namespace WindowsApplication1

{

public class Form1 : Form

{

private Label label1;

private GroupBox groupBox1;

private RadioButton radioButton1;

private RadioButton radioButton2;

private TextBox numtextBox;

private CheckBox numPositcheckBox;

private Button createbutton;

private Button calcbutton;

private TextBox maxtextBox;

private TextBox numPosittextBox;

private TextBox arraytextBox;

private CheckBox maxcheckBox;

private Container components = null;

public Form1() { ... }

protected override void Dispose( bool disposing ) { ... }

Windows Form Designer generated code { ... }

int[] arr; // описание массива

static void Main() { ... }

private void createbutton_Click(object sender, EventArgs e)

{

Random rnd = new Random();

int a = -10, b = 10; // диапазон значений элементов

if ( radioButton2.Checked )

{

a = -100; b = 100; // корректировка диапазона

}

int n = 0;

try

{

n = int.Parse(numtextBox.Text); // длина массива

}

catch

{

MessageBox.Show("Введите количество элементов!");

numtextBox.Clear();

numtextBox.Focus();

}

arraytextBox.Clear(); // очистка полей ввода

maxtextBox.Clear();

numPosittextBox.Clear();

if ( n < 0 ) n = -n; // если введено отрицательное число

arr = new int[n]; // создание массива

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

{

arr[i] = rnd.Next(a, b); // задание элемента массива

arraytextBox.Text += " " + arr[i]; // вывод массива

}

}

private void calcbutton_Click(object sender, EventArgs e)

{

int max = arr[0];

int numPosit = 0;

for ( int i = 0; i < arr.Length; ++i )

{

if ( arr[i] > max ) max = arr[i]; // поиск максимума

if ( arr[i] > 0 ) ++numPosit; // кол-во положительных

}

if ( maxcheckBox.Checked )

maxtextBox.Text = max.ToString();

else maxtextBox.Text = "";

if ( numPositcheckBox.Checked )

numPosittextBox.Text = numPosit.ToString();

else numPosittextBox.Text = "";

}

}

}