Lavig

MainMenu

Apr 13th, 2026 (edited)
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 12.77 KB | None | 0 0
  1. using System; // Підключення базових системних функцій
  2. using System.Drawing; // Підключення інструментів для роботи з графікою та кольорами
  3. using System.Windows.Forms; // Підключення бібліотеки для створення вікон та кнопок
  4. using MySql.Data.MySqlClient; // Підключення драйвера для роботи з базою даних MySQL
  5.  
  6. namespace lab8 // Назва простору імен проекту
  7. {
  8.     public partial class MainMenu : Form // Оголошення класу головного вікна програми
  9.     {
  10.         public MainMenu() // Конструктор класу, виконується при створенні вікна
  11.         {
  12.             InitializeComponent(); // Стандартний метод для ініціалізації елементів форми
  13.  
  14.             SetupCard(Roles, Roles_Title, Roles_Number, 95, 130); // Налаштування картки ролей
  15.             SetupCard(Categories, Categories_Title, Categories_Number, 95, 130); // Налаштування картки категорій
  16.             SetupCard(Courses, Courses_Title, Courses_Number, 95, 130); // Налаштування картки курсів
  17.             SetupCard(Users, Users_Title, Users_Number, 95, 130); // Налаштування картки користувачів
  18.             SetupCard(Enrollments, Enrollments_Title, Enrollments_Number, 95, 130); // Налаштування картки записів
  19.  
  20.             LoadCounts(); // Виклик методу для завантаження кількості записів з БД
  21.         }
  22.  
  23.         private void SetupCard(Button btn, Label title, Label number, int titleTop, int numberTop) // Метод для візуального оформлення кнопок-карток
  24.         {
  25.             btn.FlatStyle = FlatStyle.Flat; // Встановлення плаского стилю для кнопки
  26.             btn.FlatAppearance.BorderSize = 1; // Товщина рамки кнопки в 1 піксель
  27.             btn.FlatAppearance.BorderColor = Color.FromArgb(204, 204, 204); // Сірий колір рамки
  28.             btn.BackColor = Color.White; // Білий колір фону кнопки
  29.             btn.TabStop = false; // Вимкнення фокусування на кнопці через клавішу Tab
  30.  
  31.             title.Parent = btn; // Прив'язка напису заголовка до кнопки
  32.             number.Parent = btn; // Прив'язка напису з числом до кнопки
  33.  
  34.             title.BackColor = Color.Transparent; // Прозорий фон для заголовка
  35.             number.BackColor = Color.Transparent; // Прозорий фон для числа
  36.  
  37.             title.Top = titleTop; // Встановлення відступу заголовка зверху
  38.             number.Top = numberTop; // Встановлення відступу числа зверху
  39.  
  40.             btn.FlatAppearance.MouseOverBackColor = Color.FromArgb(224, 238, 249); // Колір при наведенні миші на кнопку
  41.             btn.FlatAppearance.MouseDownBackColor = Color.FromArgb(224, 238, 249); // Колір при натисканні на кнопку
  42.  
  43.             btn.MouseEnter += All_MouseEnter; // Підписка кнопки на подію наведення миші
  44.             btn.MouseLeave += All_MouseLeave; // Підписка кнопки на подію відведення миші
  45.             title.MouseEnter += All_MouseEnter; // Підписка заголовка на подію наведення миші
  46.             title.MouseLeave += All_MouseLeave; // Підписка заголовка на подію відведення миші
  47.             number.MouseEnter += All_MouseEnter; // Підписка числа на подію наведення миші
  48.             number.MouseLeave += All_MouseLeave; // Підписка числа на подію відведення миші
  49.  
  50.             int titleLeft = (btn.Width - title.Width) / 2; // Розрахунок позиції для центрування заголовка
  51.             title.Left = titleLeft; // Встановлення заголовка по центру горизонтально
  52.         }
  53.  
  54.         private void LoadCounts() // Метод для отримання даних з бази даних
  55.         {
  56.             string connectionString = "server=localhost;database=lab;uid=root;pwd=;"; // Рядок підключення до MySQL
  57.             MySqlConnection conn = new MySqlConnection(connectionString); // Створення об'єкта підключення
  58.  
  59.             try // Початок блоку перевірки на помилки
  60.             {
  61.                 conn.Open(); // Відкриття з'єднання з базою
  62.  
  63.                 Count(conn, "roles", Roles_Number); // Підрахунок ролей
  64.                 Count(conn, "categories", Categories_Number); // Підрахунок категорій
  65.                 Count(conn, "courses", Courses_Number); // Підрахунок курсів
  66.                 Count(conn, "users", Users_Number); // Підрахунок користувачів
  67.                 Count(conn, "enrollments", Enrollments_Number); // Підрахунок записів
  68.  
  69.                 conn.Close(); // Закриття з'єднання
  70.             }
  71.             catch (Exception ex) // Блок, що спрацює у разі помилки
  72.             {
  73.                 Console.WriteLine(ex.Message); // Вивід тексту помилки в консоль
  74.             }
  75.         }
  76.  
  77.         private void Count(MySqlConnection conn, string tableName, Label lbl) // Метод для виконання SQL-запиту підрахунку
  78.         {
  79.             string sql = "SELECT COUNT(*) FROM " + tableName; // Формування тексту SQL-запиту
  80.             MySqlCommand cmd = new MySqlCommand(sql, conn); // Створення команди для виконання
  81.             object result = cmd.ExecuteScalar(); // Виконання запиту та отримання одного числа
  82.             string count = result.ToString(); // Перетворення результату в текст
  83.  
  84.             lbl.Text = "Кількість: " + count; // Вивід результату на напис
  85.  
  86.             Button btn = (Button)lbl.Parent; // Отримання доступу до кнопки, в якій знаходиться напис
  87.             int Left = (btn.Width - lbl.Width) / 2; // Розрахунок центру для оновленого тексту
  88.             lbl.Left = Left; // Оновлення горизонтальної позиції напису
  89.         }
  90.  
  91.         private void ResetButtonStyle(Button btn) // Метод для повернення кнопці стандартного вигляду
  92.         {
  93.             if (btn != null) // Перевірка, чи існує кнопка
  94.             {
  95.                 btn.BackColor = Color.White; // Повернення білого фону
  96.                 btn.FlatAppearance.BorderColor = Color.FromArgb(204, 204, 204); // Повернення сірої рамки
  97.             }
  98.         }
  99.  
  100.         private void All_MouseEnter(object sender, EventArgs e) // Обробник події наведення миші
  101.         {
  102.             Color hover = Color.FromArgb(224, 238, 249); // Колір підсвічування фону
  103.             Color Active = Color.FromArgb(62, 151, 219); // Колір підсвічування рамки
  104.  
  105.             Control control = (Control)sender; // Визначення об'єкта, на який навели мишу
  106.             Button btn = null; // Створення порожньої змінної для кнопки
  107.  
  108.             if (control is Button) // Якщо навели прямо на кнопку
  109.             {
  110.                 btn = (Button)control; // Записуємо кнопку в змінну
  111.             }
  112.             else // Якщо навели на текст всередині кнопки
  113.             {
  114.                 btn = (Button)control.Parent; // Записуємо "батьківську" кнопку в змінну
  115.             }
  116.  
  117.             if (btn != null) // Якщо кнопку знайдено
  118.             {
  119.                 btn.BackColor = hover; // Змінюємо фон на блакитний
  120.                 btn.FlatAppearance.BorderColor = Active; // Змінюємо рамку на синю
  121.             }
  122.         }
  123.  
  124.         private void All_MouseLeave(object sender, EventArgs e) // Обробник події відведення миші
  125.         {
  126.             Control control = (Control)sender; // Визначення об'єкта, з якого пішла миша
  127.             Button btn = null; // Створення порожньої змінної для кнопки
  128.  
  129.             if (control is Button) // Якщо миша пішла з самої кнопки
  130.             {
  131.                 btn = (Button)control; // Записуємо кнопку в змінну
  132.             }
  133.             else // Якщо миша пішла з тексту всередині кнопки
  134.             {
  135.                 btn = (Button)control.Parent; // Записуємо "батьківську" кнопку в змінну
  136.             }
  137.  
  138.             if (btn != null) // Якщо кнопку знайдено
  139.             {
  140.                 Point clientMousePos = btn.PointToClient(Control.MousePosition); // Отримання координат миші відносно кнопки
  141.                 if (!btn.ClientRectangle.Contains(clientMousePos)) // Перевірка, чи дійсно миша вийшла за межі всієї кнопки
  142.                 {
  143.                     ResetButtonStyle(btn); // Повертаємо стандартний колір
  144.                 }
  145.             }
  146.         }
  147.  
  148.         private void Roles_Click(object sender, EventArgs e) // Обробник кліку по картці ролей
  149.         {
  150.             Roles form = new Roles(); // Створення нового вікна ролей
  151.             form.ShowDialog(); // Відкриття вікна у модальному режимі
  152.             ResetButtonStyle(Roles); // Скидання кольору кнопки після закриття вікна
  153.             LoadCounts(); // Оновлення лічильників
  154.         }
  155.  
  156.         private void Categories_Click(object sender, EventArgs e) // Обробник кліку по картці категорій
  157.         {
  158.             Categories form = new Categories(); // Створення вікна категорій
  159.             form.ShowDialog(); // Відкриття вікна
  160.             ResetButtonStyle(Categories); // Скидання кольору кнопки
  161.             LoadCounts(); // Оновлення лічильників
  162.         }
  163.  
  164.         private void Courses_Click(object sender, EventArgs e) // Обробник кліку по картці курсів
  165.         {
  166.             CoursesView form = new CoursesView(); // Створення вікна курсів
  167.             form.ShowDialog(); // Відкриття вікна
  168.             ResetButtonStyle(Courses); // Скидання кольору кнопки
  169.             LoadCounts(); // Оновлення лічильників
  170.         }
  171.  
  172.         private void Users_Click(object sender, EventArgs e) // Обробник кліку по картці користувачів
  173.         {
  174.             UsersView form = new UsersView(); // Створення вікна користувачів
  175.             form.ShowDialog(); // Відкриття вікна
  176.             ResetButtonStyle(Users); // Скидання кольору кнопки
  177.             LoadCounts(); // Оновлення лічильників
  178.         }
  179.  
  180.         private void Enrollments_Click(object sender, EventArgs e) // Обробник кліку по картці записів
  181.         {
  182.             EnrollmentsView form = new EnrollmentsView(); // Створення вікна записів
  183.             form.ShowDialog(); // Відкриття вікна
  184.             ResetButtonStyle(Enrollments); // Скидання кольору кнопки
  185.             LoadCounts(); // Оновлення лічильників
  186.         }
  187.  
  188.         private void ExitClick(object sender, EventArgs e) // Обробник кліку по кнопці виходу
  189.         {
  190.             Application.Exit(); // Повне закриття програми
  191.         }
  192.     }
  193. }
Advertisement
Add Comment
Please, Sign In to add comment