Przejdź do treści stopki
Iron Academy Logo
Aplikacja C#
Aplikacja C#

Inne Kategorie

Wybieranie elementów z listy - seria Spectre Console

Tim Corey
6m 26s

Spectre Console to potężny pakiet NuGet dla .NET, który umożliwia programistom tworzenie interaktywnych aplikacji konsolowych zamiast zwykłych, statycznych programów tekstowych. Jedną z jego najbardziej przydatnych funkcji jest Spectre Console Selection Prompt, który pozwala na prezentację listy opcji, przez które użytkownik może przewijać i wybierać bezpośrednio za pomocą klawiatury. To sprawia, że wprowadzanie danych w konsoli jest bardziej niezawodne, przyjazne dla użytkownika i wizualnie dopracowane w porównaniu do ręcznego wpisywania odpowiedzi.

W swoim filmie "Selecting Items from a List – Spectre Console Series" Tim Corey dokładnie pokazuje, jak używać tej funkcji. W tym artykułe będziemy śledzić jego wyjaśnienia krok po kroku, wskazując momenty czasowe, abyście mogli oglądać i kodować razem z nim. To świetny sposób na naukę tworzenia i dostosowywania Selection Prompt w własnych aplikacjach konsolowych .NET.

Wprowadzenie do lekcji

W 0:00 Tim wyjaśnia, że Spectre Console pozwala programistom przekształcić aplikacje konsolowe C# w atrakcyjne wizualnie i bogate w informacje aplikacje. Jego seria filmów omawia bibliotekę w 10-minutowych odcinkach, a linki do kodu źródłowego znajdują się w opisie.

W tej lekcji (0:18) Tim skupia się na tym, jak poprosić użytkownika o wybranie opcji z listy, a następnie użycie klawiatury do poruszania się po tej liście. Ten wzorzec "pytania i odpowiedzi" stanowi podstawę tworzenia aplikacji konsolowych, które sprawiają wrażenie nowoczesnych i interaktywnych. Przypomina również widzom (0:27), aby subskrybowali jego kanał i odwiedzili stronę iamtimcorey.com w celu uzyskania dodatkowych materiałów szkoleniowych.

Tworzenie monitu o wybór

W 0:34 Tim pokazuje listę nazw zastępczych, których często używa w swoich aplikacjach. Równie dobrze mogłaby to być lista owoców — jabłko, banan, pomarańcza — gdybyś chciał podać przykład "ulubionego owocu". Tworzy zmienną typu string, aby przechowywać odpowiedź, którą wybierze użytkownik:

string favoriteName;
string favoriteName;

Spectre Console Selecting Items List 1 related to Tworzenie monitu o wybór

Następnie, w 0:57, Tim przechodzi od podstawowego polecenia omówionego w poprzedniej lekcji do pełnej funkcji SelectionPrompt:

favoriteName = AnsiConsole.Prompt(
    new SelectionPrompt<string>()
        .Title("Which is your favorite placeholder name")
        .AddChoices(names)
);
favoriteName = AnsiConsole.Prompt(
    new SelectionPrompt<string>()
        .Title("Which is your favorite placeholder name")
        .AddChoices(names)
);

Wyjaśnia (1:13), że SelectionPrompt wymaga tytułu, który w jego przypadku brzmi: "Jaka jest twoja ulubiona nazwa symbolu zastępczego". Gdybyś pytał o ulubiony owoc, zmieniłbyś tytuł odpowiednio na "Jaki jest twój ulubiony owoc".

Chociaż można ozdobić tekst (1:24) stylami Spectre Console — na przykład używając kolorów niebieskiego, zielonego lub szarego — w tej lekcji skupia się on na samym monicie wyboru.

W 1:39 Tim dodaje opcje — swoją listę nazw — wywołując metodę .AddChoices(). Wybory te mogą dotyczyć dowolnych elementów: owoców, liczb, obiektów, a nawet wyników funkcji "wyszukiwania".

Na koniec, o 1:55, Tim używa linii znaczników Spectre Console, aby wyświetlić wybraną pozycję użytkownikowi:

AnsiConsole.MarkupLine($"Your favorite name is [red]{favoriteName}[/].");
AnsiConsole.MarkupLine($"Your favorite name is [red]{favoriteName}[/].");

W tym przypadku użyto znaczników wbudowanych, aby zaznaczyć wybraną odpowiedź na czerwono, ale równie dobrze można użyć koloru niebieskiego lub zielonego, jeśli wymaga tego motyw konsoli.

Uruchomienie monitu wyboru

O 2:34 Tim zapisuje i uruchamia kod. W konsoli wyświetla się:

  • Lista nazw lub owoców.

  • Klawisze strzałek pozwalają poruszać się w górę i w dół (2:41).

  • Naciśnij klawisz Enter, aby wybrać pozycję.

Tim pokazuje, jak wybrać "Sue Storm" (2:50). Po naciśnięciu klawisza Enter lista znika, a konsola wyświetla:

Your favorite name is Sue Storm.
Your favorite name is Sue Storm.

Gdyby była to lista owoców, mogłoby się tam znaleźć: "Twoim ulubionym owocem jest banan" lub "Twoim ulubionym owocem jest jabłko".

Obsługa długich list

Następnie Tim porusza powszechny problem: długie listy. O 3:13 przedstawia właściwość PageSize służącą do ograniczania liczby widocznych elementów:

.PageSize(4)
.PageSize(4)

Wyjaśnia (3:19), że liczba cztery jest celowo niewielka, aby zademonstrować tę funkcję. Jednocześnie wyświetla się tylko tyle pozycji. Jeśli masz długą listę owoców — jabłko, banan, pomarańcza, mango, ananas — PageSize zapobiega niekończącemu się przewijaniu konsoli.

Aby pomóc użytkownikom, Tim dodaje komunikat MoreChoicesText w kolorze szarym o 3:34:

.MoreChoicesText("[grey](Move down to reveal more choices)[/]")
.MoreChoicesText("[grey](Move down to reveal more choices)[/]")

Ten tekst informuje użytkownika, że może przewinąć w dół, aby wyświetlić więcej opcji. Jest to szczególnie pomocne, gdy lista jest długa i chcesz uzyskać jasną wskazówkę, zamiast ryzykować błąd lub nieporozumienie.

Demonstracja zachowania długiej listy

Tim ponownie uruchamia program o 4:08:

  • Początkowo wyświetlane są tylko cztery opcje.

  • Szary komunikat brzmi: "Przesuń w dół, aby wyświetlić więcej opcji" (4:13).

  • Przewijanie w dół powoduje wyświetlenie dodatkowych pozycji.

  • Przewinięcie w górę powoduje ponowne wyświetlenie pierwszych z nich (4:20).

Tim zauważa (4:25), że jest to idealne rozwiązanie w przypadku długich list — bez konieczności niekończącego się przewijania konsoli. Można wyświetlać 10 lub 15 elementów naraz i pozwolić użytkownikowi przeglądać pozostałe. Rozwiązuje to problem przeciążenia konsoli zbyt dużą ilością danych wyświetlanych jednocześnie.

Dłączego monit wyboru jest lepszy niż wpisywanie

O 4:38 Tim podkreśla, dłączego Selection Prompt jest lepszy niż pisanie:

  • Po dokonaniu wyboru lista znika (4:41).

  • Wybrana odpowiedź jest widoczna od razu (4:45).

Porównuje to (5:05) do starych monitów, w których użytkownicy musieli wpisywać "tak" lub "nie". Dzięki SelectionPrompt można bezpośrednio zaproponować te opcje i pozwolić użytkownikom na wybór za pomocą klawiszy strzałek, co zmniejsza liczbę błędów i sprawia, że korzystanie z aplikacji jest płynniejsze.

Tim mówi (5:35), że pole wyświetlania jest "naprawdę fajnym dodatkiem", ponieważ upraszcza wprowadzanie danych, sprawia, że aplikacje konsolowe są bardziej interaktywne, oraz zapewnia jasne rozwiązanie problemów związanych z wprowadzaniem danych.

Inne zastosowania i przyszłe tematy

Tim wspomina (5:43), że ta lekcja dotyczy wybierania jednego elementu z listy. W przyszłych filmach pokaże monity wielokrotnego wyboru (5:39), w których użytkownicy mogą włączać i wyłączać wiele elementów, a następnie naciskać klawisz Enter, aby potwierdzić.

Zauważa również (5:47), że lista może zawierać dowolny typ obiektu — ciągi znaków, liczby całkowite, owoce, a nawet domyślne opcje zwracane przez funkcję. Na przykład można poprosić użytkownika o podanie ulubionego owocu ("jabłko", "banan", "pomarańcza") zamiast imienia (5:55).

Dzięki funkcji Selection Prompt w Spectre Console można nawet ustawić wartości domyślne, obsługiwać wymagańe odpowiedzi oraz dostosować działanie podejmowane po dokonaniu wyboru.

Wnioski

Tim kończy (6:01) swój film, potwierdzając, że właśnie w ten sposób wdraża się wybór elementów w Spectre Console — to przejrzysty i przyjazny dla użytkownika sposób obsługi list w aplikacjach konsolowych. Niezależnie od tego, czy pytasz o ulubiony owoc, liczbę czy przedmiot, monit wyboru zapewnia Twojej aplikacji dopracowane wrażenia bez dodatkowego pisania i błędów.

Najważniejsze wnioski z filmu Tima Coreya

  • Funkcja SelectionPrompt w Spectre Console pozwala użytkownikom poruszać się po listach za pomocą klawiszy strzałek zamiast ręcznego wpisywania danych.

  • Dostosuj za pomocą tytułu, opcji, kolorów (niebieski, zielony, szary), rozmiaru strony i tekstu "Więcej opcji", aby wyświetlić więcej opcji.

  • Po wybraniu pozycji lista znika, a wyświetlana jest wybrana odpowiedź.

  • Idealne zarówno dla krótkich, jak i długich list, zapobiegające problemom z przewijaniem konsoli.

  • Działa z dowolnym typem danych (ciągi znaków, liczby, owoce, takie jak jabłko, banan, pomarańcza, lub obiekty niestandardowe).

  • W kolejnych filmach Tim omówi monity z wielokrotnym wyborem, w których użytkownicy mogą przełączać się między wieloma opcjami, a następnie nacisnąć klawisz Enter, aby potwierdzić.
Hero Worlddot related to Wybieranie elementów z listy - seria Spectre Console
Hero Affiliate related to Wybieranie elementów z listy - seria Spectre Console

Zarabiaj więcej, dzieląc się tym, co kochasz

Tworzysz treści dla deweloperów pracujących z .NET, C#, Java, Python, czy Node.js? Zamień swoją wiedzę specjalistyczną na dodatkowy dochód!

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie