Краткие теоретические сведения
Разработаем программу, которая в процессе работы позволяет изменять размеры главного окна (его ширину и высоту) на значения, ввод которых выполняется в диалоговом окне.
Задание по разработке такой программы можно сформулировать следующим образом:
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;
}
}