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

Пример выполнения варианта №0

1.Задание

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

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

  • поля типа TextBox для ввода длин сторон прямоугольника и координат его левого верхнего угла;

– группу из трех флажков (Red, Green, Blue) типа RadioButton;

  • кнопку типа Button.

После задания параметров команда Рисовать становится доступной.

При выборе команды Рисовать в главном окне приложения выводится прямоугольник заданного размера и сочетания цветов или выдается сообщение, если введенные размеры превышают размер окна.

2.Листинг программы

//файл Form1.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace lr9oop

{

public struct Rectangle

{

public int x;

public int y;

public int length;

public int width;

public Color color;

}

public partial class Form1 : Form

{

private Rectangle rect;

public Rectangle Rect

{

set

{

rect = value;

}

}

public Form1()

{

InitializeComponent();

}

private void quitToolStripMenuItem_Click(object sender, EventArgs e)

{

Application.Exit();

}

private void setToolStripMenuItem_Click(object sender, EventArgs e)

{

Form2 f = new Form2();

f.ShowDialog(this);

paintToolStripMenuItem.Enabled = true;

}

private void paintToolStripMenuItem_Click(object sender, EventArgs e)

{

try

{

if (rect.x < 0 || rect.x + rect.length > this.Size.Width ||

rect.y < 0 || rect.y + rect.width > this.Size.Height)

throw new Exception("Заданны неподходящие размеры прямоугольника");

Graphics g = this.CreateGraphics();

g.FillRectangle(new SolidBrush(rect.color), rect.x, rect.y, rect.length, rect.width);

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

}

}

}

//файл Form2.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace lr9oop

{

public partial class Form2 : Form

{

public Form2()

{

InitializeComponent();

radioButton1.Select();

}

private void button1_Click(object sender, EventArgs e)

{

try

{

Rectangle rect = new Rectangle();

rect.length = Int32.Parse(textBox1.Text);

rect.width = Int32.Parse(textBox2.Text);

rect.x = Int32.Parse(textBox3.Text);

rect.y = Int32.Parse(textBox4.Text);

if (radioButton1.Checked)

rect.color = Color.Green;

if (radioButton2.Checked)

rect.color = Color.Blue;

if (radioButton3.Checked)

rect.color = Color.Red;

Form1 p = (Form1)this.Owner;

p.Rect = rect;

this.Close();

}

catch

{

MessageBox.Show("Необходимо ввести целые числа!");

}

}

}

}

3.Результат выполнения