Загрузка данных
using System;
using System.Drawing;
using System.Windows.Forms;
namespace laba5
{
public partial class Form1 : Form
{
// Объявляем элементы управления
private Button btnRed, btnBlue, btnRandColor, btnPalette, btnExit;
private Panel panel1;
private RadioButton rbYellow, rbWhite, rbRandom;
private Button btnOK;
// Элементы для флажков
private CheckBox chkTitle, chkBlue, chkExit;
// Элементы для Задания 6 (Картинки)
private PictureBox pictureBox1;
private Button btnSelectImg, btnShow, btnHide;
// Невизуальные компоненты
private ColorDialog colorDialog1;
private OpenFileDialog openFileDialog1;
private Random rnd = new Random();
public Form1()
{
// Настройка самой формы
this.Text = "Заголовок";
this.Size = new Size(700, 500);
// Инициализация компонентов (вызываем методы, которые их создадут)
InitializeCustomComponents();
}
private void InitializeCustomComponents()
{
// --- 1. Кнопки управления цветом (Задание 5) ---
btnRed = new Button { Text = "Цвет красный", Location = new Point(400, 20), Width = 120 };
btnRed.Click += BtnRed_Click;
btnBlue = new Button { Text = "Цвет окна", Location = new Point(400, 60), Width = 120 };
btnBlue.Click += BtnBlue_Click;
btnRandColor = new Button { Text = "Случайный цвет", Location = new Point(400, 100), Width = 120 };
btnRandColor.Click += BtnRandColor_Click;
btnPalette = new Button { Text = "Цвет из палитры", Location = new Point(400, 140), Width = 120 };
btnPalette.Click += BtnPalette_Click;
btnExit = new Button { Text = "Выход", Location = new Point(20, 400), Width = 80 };
btnExit.Click += (s, e) => Application.Exit();
// --- 2. Панель с переключателями ---
panel1 = new Panel { Location = new Point(20, 200), Size = new Size(150, 120), BorderStyle = BorderStyle.FixedSingle };
rbYellow = new RadioButton { Text = "Желтый", Location = new Point(10, 10), Checked = true };
rbWhite = new RadioButton { Text = "Белый", Location = new Point(10, 40) };
rbRandom = new RadioButton { Text = "Случайный", Location = new Point(10, 70) };
panel1.Controls.Add(rbYellow);
panel1.Controls.Add(rbWhite);
panel1.Controls.Add(rbRandom);
btnOK = new Button { Text = "OK", Location = new Point(50, 330), Width = 80 };
btnOK.Click += BtnOK_Click;
// --- 3. Флажки (CheckBox) ---
chkTitle = new CheckBox { Text = "Заголовок", Location = new Point(400, 200) };
chkTitle.CheckedChanged += ChkTitle_CheckedChanged;
chkBlue = new CheckBox { Text = "Цвет синий", Location = new Point(400, 230) };
chkBlue.CheckedChanged += ChkBlue_CheckedChanged;
chkExit = new CheckBox { Text = "Выход", Location = new Point(400, 260) };
chkExit.CheckedChanged += (s, e) => { if (chkExit.Checked) Application.Exit(); };
// --- 4. Задание 6 (PictureBox и кнопки) ---
pictureBox1 = new PictureBox
{
Location = new Point(200, 20),
Size = new Size(180, 150),
BorderStyle = BorderStyle.FixedSingle,
SizeMode = PictureBoxSizeMode.StretchImage, // Важно из методички!
Visible = false // Изначально скрыт
};
btnSelectImg = new Button { Text = "Выбор изображения", Location = new Point(200, 180), Width = 120 };
btnSelectImg.Click += BtnSelectImg_Click;
btnShow = new Button { Text = "Показать", Location = new Point(200, 220), Width = 80 };
btnShow.Click += (s, e) => { if (pictureBox1.Image != null) pictureBox1.Visible = true; };
btnHide = new Button { Text = "Скрыть", Location = new Point(290, 220), Width = 80 };
btnHide.Click += (s, e) => pictureBox1.Visible = false;
// --- 5. Невизуальные компоненты ---
colorDialog1 = new ColorDialog();
openFileDialog1 = new OpenFileDialog { Filter = "Image Files|*.jpg;*.jpeg;*.png;*.bmp" };
// --- Добавляем все элементы на форму ---
this.Controls.Add(btnRed);
this.Controls.Add(btnBlue);
this.Controls.Add(btnRandColor);
this.Controls.Add(btnPalette);
this.Controls.Add(btnExit);
this.Controls.Add(panel1);
this.Controls.Add(btnOK);
this.Controls.Add(chkTitle);
this.Controls.Add(chkBlue);
this.Controls.Add(chkExit);
this.Controls.Add(pictureBox1);
this.Controls.Add(btnSelectImg);
this.Controls.Add(btnShow);
this.Controls.Add(btnHide);
}
// ==========================================
// ЛОГИКА КНОПОК И ЭЛЕМЕНТОВ
// ==========================================
private void BtnRed_Click(object sender, EventArgs e) => btnRed.BackColor = Color.Red;
private void BtnBlue_Click(object sender, EventArgs e) => this.BackColor = Color.LightBlue;
private void BtnRandColor_Click(object sender, EventArgs e) => this.BackColor = Color.FromArgb(rnd.Next(256), rnd.Next(256), rnd.Next(256));
private void BtnPalette_Click(object sender, EventArgs e)
{
if (colorDialog1.ShowDialog() == DialogResult.OK)
this.BackColor = colorDialog1.Color;
}
private void BtnOK_Click(object sender, EventArgs e)
{
if (rbYellow.Checked) this.BackColor = Color.Yellow;
else if (rbWhite.Checked) this.BackColor = Color.White;
else if (rbRandom.Checked) this.BackColor = Color.FromArgb(rnd.Next(256), rnd.Next(256), rnd.Next(256));
}
private void ChkTitle_CheckedChanged(object sender, EventArgs e)
{
this.Text = chkTitle.Checked ? "Новый заголовок" : "Заголовок";
}
private void ChkBlue_CheckedChanged(object sender, EventArgs e)
{
if (chkBlue.Checked) this.BackColor = Color.Blue;
}
private void BtnSelectImg_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
try
{
pictureBox1.Image = new Bitmap(openFileDialog1.FileName);
}
catch (Exception)
{
MessageBox.Show("Не удалось загрузить изображение.");
}
}
}
}
}