IRONSOFTWAREHOME

Wybieranie elementów z listy - seria Spectre Console

Selecting Items from a List - Spectre Console Series

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 artykule będziemy śledzić jego wyjaśnienia krok po kroku, wskazując znaczniki czasu, aby móc oglądać i kodować. 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;

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)
);

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}[/].");

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.

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)

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)[/]")

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.

Dlaczego monit wyboru jest lepszy niż wpisywanie

O 4:38 Tim podkreśla, dlaczego 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 obejmuje wybieranie jednego elementu z listy. W przyszłych filmach pokaże monity multi-selekcji (5:39), w których użytkownicy mogą przełączać wiele przedmiotów, a następnie nacisnąć Enter, aby zatwierdzić.

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ć wymagane 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).

  • Tim omówi w przyszłych filmach monity multi-selekcji, w których użytkownicy mogą przełączać wiele opcji, a następnie nacisnąć Enter, aby zatwierdzić.

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Otrzymaj swoją Konsultację Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta