[ Полезный рекламный блок ]
Попробуйте свои силы в игре, где ваши навыки программирования на C# станут решающим фактором. Переходите по ссылке 🔰.
У цій статті розглянемо 2 способи створення меню: просте і більш складне.
У консольному додатку C# можна створити меню, використовуючи оператор switch і цикл. Нижче наведено приклад створення меню:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
static void Main() { while (true) { Console.WriteLine(""" 1. Option 1 2. Option 2 3. Option 3 4. Exit Choose an option: """); string input = Console.ReadLine(); switch (input) { case "1": Console.WriteLine("Option 1 selected"); // code for option 1 break; case "2": Console.WriteLine("Option 2 selected"); // code for option 2 break; case "3": Console.WriteLine("Option 3 selected"); // code for option 3 break; case "4": Console.WriteLine("Exiting program"); return; default: Console.WriteLine("Invalid option"); break; } Console.ReadLine(); Console.Clear(); } } |
У цьому прикладі меню відображається за допомогою операторів Console.WriteLine(). Користувачеві пропонується вибрати опцію, ввівши число. Введені дані зчитуються за допомогою Console.ReadLine(), а потім використовується оператор switch для виконання відповідного коду для обраної опції.
Зверніть увагу, що цикл while використовується для безперервного відображення меню доти, доки користувач не вирішить вийти з програми.
Найкраще меню
Думаю, багатьом програмістам-початківцям C# вже відома така проста форма меню, давайте визначимо щось цікавіше. Для цього завдання потрібні знання теми “Методи” і “Enum”.
У цьому прикладі ілюструється зручності визначення Enum, який містить пункти меню:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
/// <summary> /// Menu based enum /// </summary> /// <param name="canCancel"></param> /// <param name="userEnum">Enum enumeration of the user for which we build the menu</param> /// <param name="spacingPerLine">Number of indents between columns</param> /// <param name="optionsPerLine">Number of values in one column</param> /// <param name="startX">Number of indents on the left side of the console</param> /// <param name="startY">Number of indents on the upper side of the console</param> /// <returns></returns> public static int MultipleChoice(bool canCancel, Enum userEnum, int spacingPerLine = 18, int optionsPerLine = 2, int startX = 1, int startY = 1) { int currentSelection = 0; ConsoleKey key; Console.CursorVisible = false; int length = Enum.GetValues(userEnum.GetType()).Length; do { Console.Clear(); for (int i = 0; i < length; i++) { Console.SetCursorPosition(startX + (i % optionsPerLine) * spacingPerLine, startY + i / optionsPerLine); if (i == currentSelection) Console.ForegroundColor = ConsoleColor.Red; Console.Write(Enum.Parse(userEnum.GetType(), i.ToString())); Console.ResetColor(); } key = Console.ReadKey(true).Key; switch (key) { case ConsoleKey.LeftArrow: { if (currentSelection % optionsPerLine > 0) currentSelection--; break; } case ConsoleKey.RightArrow: { if (currentSelection % optionsPerLine < optionsPerLine - 1) currentSelection++; break; } case ConsoleKey.UpArrow: { if (currentSelection >= optionsPerLine) currentSelection -= optionsPerLine; break; } case ConsoleKey.DownArrow: { if (currentSelection + optionsPerLine < length) currentSelection += optionsPerLine; break; } case ConsoleKey.Escape: { if (canCancel) return -1; break; } } } while (key != ConsoleKey.Enter); Console.CursorVisible = true; return currentSelection; }Використання цього методу має такий вигляд: |
Использование данного метода выглядит следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
enum ShopMenu { Start, Settings, About, Exit } static void Main() { while (true) { int input = MultipleChoice(true, new ShopMenu()); switch ((ShopMenu)input) { case ShopMenu.Start: Console.WriteLine("Your choice: Start"); break; case ShopMenu.Settings: Console.WriteLine("Your choice: Settings"); break; case ShopMenu.About: Console.WriteLine("Your choice: About"); break; case ShopMenu.Exit: Environment.Exit(0); break; default: break; } Console.ReadLine(); Console.Clear(); } } |
Як альтернативу, можна використовувати масив або колекцію, замість enum.
Я сподіваюся, що вам сподобалося читати цю статтю, і вона виявилася легкою для розуміння. Будь ласка, дайте мені знати, якщо у вас є якісь коментарі або виправлення.
Так само вам може бути цікава попередня стаття – Як зробити пароль зірочками.
Ви хочете навчитися писати код мовою програмування C#?
Створювати різні інформаційні системи, що складаються з сайтів, мобільних клієнтів, десктопних додатків, телеграм-ботів тощо.
Переходьте до нас на сторінку Dijix і ознайомтеся з умовами навчання, ми спеціалізуємося тільки на індивідуальних заняттях, як для початківців, так і для просунутих програмістів. Ви можете взяти як одне заняття для опрацювання питання, що вас цікавить, так і кілька, для більш щільної роботи. Завдяки особистому кабінету, кожен студент підвищить якість свого навчання, у вашому розпорядженні:
- Доступ до пройденого матеріалу
- Тематичні статті
- Бібліотека книг
- Онлайн тестування
- Спілкування в закритих групах