Разработаем программу, которая в процессе работы позволяет изменять размеры главного окна (его ширину и высоту) на значения, ввод которых выполняется в диалоговом окне.
Задание по разработке такой программы можно сформулировать следующим образом:
1. Создать меню с командами Ввод данных, Изменение размеров, Выход. Команда Изменение размеров при запуске приложения недоступна.
При выборе команды Выход приложение завершает работу. При выборе команды Ввод данных открывается диалоговое окно, содержащее:
– два поля ввода типа TextBox с метками По горизонтали, По вертикали;
– группу из двух переключателей Уменьшение, Увеличение типа RadioButton;
– две кнопки типа Button.
2. Обеспечить возможность ввода значений в поля Размер по горизонтали и Размер по вертикали. Значения интерпретируются как количество пикселей, на которое нужно изменить размеры главного окна: увеличить или уменьшить в зависимости от положения переключателей.
После ввода значений команда Изменение размеров становится доступной. При выборе этой команды размеры главного окна увеличиваются или уменьшаются на введенное в диалоговом окне количество пикселей.
Вид главного окна и диалогового окна работающего приложения показан на рис. 5.1, а код программы приведен в листингах 5.1 и 5.2.
|

б
Рис. 5.1. Демонстрация работы приложения:
а – главное окно; б – диалоговое окно
Листинг 5.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;
}
}
}
}
Листинг 5.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;
}
}