Загрузка данных


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("Не удалось загрузить изображение.");
                }
            }
        }
    }
}