logo search
OOP / лаб_раб_4

Краткие теоретические сведения

Разработаем программу, которая в процессе работы позволяет изменять размеры главного окна (его ширину и высоту) на значения, ввод которых выполняется в диалоговом окне.

Задание по разработке такой программы можно сформулировать следующим образом:

1. Создать меню с командами Ввод данных, Изменение размеров, Выход. Команда Изменение размеров при запуске приложения недоступна.

При выборе команды Выход приложение завершает работу. При выборе команды Ввод данных открывается диалоговое окно, содержащее:

– два поля ввода типа TextBox с метками По горизонтали, По вертикали;

– группу из двух переключателей Уменьшение, Увеличение типа RadioButton;

– две кнопки типа Button.

2. Обеспечить возможность ввода значений в поля Размер по горизонтали и Размер по вертикали. Значения интерпретируются как количество пикселей, на которое нужно изменить размеры главного окна: увеличить или уменьшить в зависимости от положения переключателей.

После ввода значений команда Изменение размеров становится доступной. При выборе этой команды размеры главного окна увеличиваются или уменьшаются на введенное в диалоговом окне количество пикселей.

Вид главного окна и диалогового окна работающего приложения показан на рис. 4.1, а код программы приведен в листингах 4.1 и 4.2.

а

б

Рис. 4.1. Демонстрация работы приложения:

а – главное окно; б – диалоговое окно

Листинг 4.1. Код файла Form1.cs главной формы приложения

namespace Диалоговые_окна

{

public partial class Form1 : Form

{

// hor – величина изменения размера по горизонтали

// wer – величина изменения размера по вертикали

int hor, wer;

// m – признак уменьшения размера

// b – признак увеличения размера

bool m, b;

public Form1( )

{

InitializeComponent( );

}

// Щелчок по пункту меню Изменение размеров

private void изменениеРазмеровToolStripMenuItem_Click(object sender,

EventArgs e)

{

if (b == true)

{

Height += wer;

Width += hor;

}

if (m == true)

{

Height -= wer;

Width -= hor;

}

this.изменениеРазмеровToolStripMenuItem.Enabled = false;

}

// Щелчок по пункту меню Выход

private void выходToolStripMenuItem_Click(object sender, EventArgs e)

{

Close( );

}

// Щелчок по пункту меню Ввод данных

private void вводДанныхToolStripMenuItem_Click(object sender,

EventArgs e)

{

Form2 f = new Form2( ); // Создать обьект второй формы

// Если вторая форма видима и пользователь нажал закончил ввод данных

// в ней

if (f.ShowDialog( ) == DialogResult.OK)

{

// то получить из второй формы величину изменения по горизонтали

hor = f.H;

// получить из второй формы величину изменения по вертикали

wer = f.W;

// получить из второй формы направление изменения «уменьшение»

m = f.R1;

// получить из второй формы направление изменения «увеличение»

b = f.R2

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

this.изменениеРазмеровToolStripMenuItem.Enabled = true;

}

}

}

}

Листинг 4.2. Код файла Form2.cs диалогового окна

namespace Диалоговые_окна

{

public partial class Form2 : Form

{

int h, w;

public Form2( )

{

InitializeComponent( );

}

// Метод-свойство для получения размера изменения по горизонтали

public int H

{

get

{

return h;

}

}

// Метод-свойство для получения размера изменения по вертикали

public int W

{

get

{

return w;

}

}

// Метод-свойство для получения значения состояния первой радиокнопки

public bool R1

{

get

{

return radioButton1.Checked;

}

}

// Метод-свойство для получения значения состояния второй радиокнопки

public bool R2

{

get

{

return radioButton2.Checked;

}

}

// Щелчок по кнопке Ввод

private void button1_Click(object sender, EventArgs e)

{

try

{

h = Convert.ToInt32(textBox1.Text);

}

catch (FormatException)

{

MessageBox.Show("Ошибка ввода размера по горизонтали!");

return;

}

try

{

w = Convert.ToInt32(textBox2.Text);

}

catch (FormatException )

{

MessageBox.Show("Ошибка ввода размера по вертикали!");

return;

}

if (radioButton1.Checked == false && radioButton2.Checked ==

false)

{

MessageBox.Show("Вы не задали направление изменения!");

return;

}

}