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

Inne Kategorie

Listy z wyborem wielokrotnym z grypowaniem - seria Spectre Console

Tim Corey
6m 21s

Spectre Console to biblioteka .NET, która pozwala przekształcać proste aplikacje konsolowe C# w bogate wizualnie, interaktywne narzędzia. Zamiast statycznych czarno-białych ekranów, można wyświetlać użytkownikom kolory, układy i interaktywne opcje. W tym artykułe zagłębimy się w jedną z najpotężniejszych funkcji wprowadzania — zapytania o wielokrotne wybory — i szczególnie w to, jak używać grup wyborów.

Zrobimy to, śledząc krok po kroku wideo Tima Coreya "Multi-Select Lists with Groupings – Spectre Console Series". Tim wyjaśnia, pokazuje kod i go uruchamia, abyś mógł zobaczyć, jak wdrożyć to we własnym projekcie. Poniżej każda sekcja wskazuje przybliżony czas w wideo, kiedy pojawia się ten temat, aby można było bezpośrednio do niego przejść.

Wprowadzenie do zapytania o wielokrotne wybory

Na początku wideo, Tim Corey przypomina widzom, że Spectre Console pozwala "przekształcić aplikacje konsolowe C# w atrakcyjne wizualnie i informacyjne aplikacje" (0:02). Jego seria rozkłada bibliotekę na kawałki, omawiając ją w dziesięciominutowych segmentach. To konkretne wideo skupia się na prośbie, aby użytkownik wybrał jeden lub wiele wyborów z listy lub z kilku list, używając zapytania o wielokrotne wybory (0:18).

Ustawienie prostego zapytania o wielokrotne wybory

Tim zaczyna od pokazywania dwóch list, które już ma w swoim kodzie:

List<string> usualNames = new() {
    "Tim Corey",
    "Sue Storm",
    "Bilbo Baggins",
    "John Doe",
    "Princess Donut",
    "Steve Rogers"
};

List<string> familyNames = new() {
    "Charity",
    "Jon",
    "Chris"
};
List<string> usualNames = new() {
    "Tim Corey",
    "Sue Storm",
    "Bilbo Baggins",
    "John Doe",
    "Princess Donut",
    "Steve Rogers"
};

List<string> familyNames = new() {
    "Charity",
    "Jon",
    "Chris"
};

(You can see these on screen at about 0:38.)

Tworzy List o nazwie favoriteNames, ponieważ użytkownik może wybrać zero, jeden lub wiele elementów (0:53–1:01). Następnie przypisuje ją do wyniku AnsiConsole.Prompt z nowym MultiSelectionPrompt() (1:05–1:16).

Tim podkreśla, że każdy wybór będzie obiektem string, a zapytanie zwróci tablicę lub listę wybranych przez użytkownika wyborów (1:20–1:26).

Następnie dodaje niestandardowy tytuł, aby skierować użytkownika:

.Title("Which are your favorite placeholder names?")
.Title("Which are your favorite placeholder names?")

To ustawia wyraźny nagłówek na górze zapytania (1:31–1:50).

Dodawanie tekstu instrukcji dla użytkownika

Tim nie ogranicza się tylko do tytułu. Dodaje także tekst instrukcji, aby powiedzieć użytkownikowi, jak korzystać z zapytania (1:50).

Pisze coś takiego:

.InstructionsText("(Press <space> to toggle, <enter> to accept)")
.InstructionsText("(Press <space> to toggle, <enter> to accept)")

O godzinie 1:56 wyjaśnia, że możesz nawet sformatować go w kolorach lub innych stylach — Spectre Console obsługuje dostosowywanie koloru akcentu, dzięki czemu instrukcje mogą pojawiać się na zielono, niebiesko, żółto, szaro lub czerwono, aby podkreślić kluczowe części.

Ważną częścią jest powiedzenie użytkownikowi: naciśnij spację, aby przełączać elementy, naciśnij enter, aby zaakceptować odpowiedź (2:12). To sprawia, że skrypt jest łatwy dla użytkownika.

Dodawanie wyborów i wyświetlanie wyników

Następnie Tim dodaje rzeczywiste dane. Na początku trzyma się prostoty z jedną listą. Używa .AddChoices(usualNames) (2:24–2:34).

Następnie pisze prostą pętlę foreach, aby wypisać wybory użytkownika z powrotem na konsolę (2:38–2:52):

foreach (var name in favoriteNames)
{
    Console.WriteLine(name);
}
foreach (var name in favoriteNames)
{
    Console.WriteLine(name);
}

Nie martwi się o formatowanie — po prostu pokazuje, że zapytanie o wielokrotne wybory działa (2:53–3:00).

Tim uruchamia program w terminalu (3:00). Zapytanie wyświetla jego listę nazwisk. Używa spacji, aby wybrać kilka elementów — takich jak "Tim Corey" i "Sue Storm" — a następnie naciska Enter, a konsola wypisuje wybrane opcje (3:07–3:15). To demonstruje najprostszy działający wariant.

Spectre Console Multi Select Lists Groupings 1 related to Dodawanie wyborów i wyświetlanie wyników

Przechodzenie do wielu list z grupami wyborów

Po działającym podstawowym ustawieniu, Tim sprawia, że rzeczy są "trochę bardziej interesujące" (3:22). Zamiast jednej listy, ma dwie listy: usualNames i familyNames.

Komentuje oryginalne wywołanie .AddChoices() i wprowadza .AddChoiceGroup() (3:32–3:38). To pozwala mu grupować powiązane elementy pod etykietą. Pisze:

.AddChoiceGroup("The usual names", usualNames)
.AddChoiceGroup("Family names", familyNames)
.AddChoiceGroup("The usual names", usualNames)
.AddChoiceGroup("Family names", familyNames)

Teraz każda grupa pojawi się osobno w zapytaniu. Ta struktura jest szczególnie pomocna, gdy prezentujesz dziesiątki opcji i chcesz zorganizować je na strony lub grupy. Chociaż transkrypt tego nie pokazuje, multi-wybór Spectre Console również ma właściwość PageSize, dzięki czemu możesz kontrolować, ile elementów jest wyświetlanych naraz, gdy jest więcej wyborów niż mieści się na jednym ekranie.

Jak działa wybór grupowy w czasie wykonywania

Tim zapisuje i ponownie uruchamia kod (4:11). Nowe zapytanie pokazuje obie grupy z wyraźnymi etykietami. Jeśli przesunie kursor na etykietę "The usual names" i naciśnie spację, wszystkie elementy w tej grupie zostaną wybrane jednocześnie (4:17–4:19).

Zwraca też uwagę, że Spectre Console automatycznie obsługuje przewijanie, jeśli lista jest dłuższa niż ekran — zobaczysz wiadomość "przesuń w górę i w dół, aby odsłonić więcej wyborów" w szarości (4:25–4:31). To domyślne zachowanie dla przewijalnych list.

Tim demonstruje przewijanie do nazwisk rodziny, wybierając je, a następnie wybierając także osobę jak Sue Storm (4:39–4:43). Gdy naciska Enter, konsola wypisuje wszystkie wybrane nazwy łącznie (4:45). To pokazuje, jak funkcja wyświetla więcej wyborów, pozwala je przełączać, a następnie zwraca jedną listę wybranych obiektów.

Spectre Console Multi Select Lists Groupings 2 related to Jak działa wybór grupowy w czasie wykonywania

Rozumienie zapytania o wielokrotne wybory vs. zapytanie o wybór

O godz. 5:00 Tim podsumowuje to, co pokazał. Zapytanie o wielokrotne wybory działa jak zwykłe zapytanie o wybór, ale zwraca listę dowolnego typu, który podasz (5:03–5:08).

Możesz dodać tekst instrukcji, tak jak zrobił to Tim, i możesz używać grup wyborów do organizowania i opcjonalnego wyboru całych grup jednym naciśnięciem klawisza (5:14–5:18). To sprawia, że duże lub złożone menu są znacznie bardziej zarządzalne dla użytkownika.

To również sugeruje zdolność Spectre Console do pracy z złożonymi obiektami: twój obiekt wyboru może być czymś więcej niż stringiem. Możesz dostarczyć obiekt z właściwością ChoiceLabel, aby kontrolować, co jest wyświetlane, podczas gdy nadal otrzymujesz cały obiekt z powrotem, gdy użytkownik zaakceptuje swoją odpowiedź.

Elastyczne użycie grup wyborów i etykiet

Tim również wyjaśnia, że nie musisz mieć dwóch grup, aby używać .AddChoiceGroup() (5:20–5:24). Nawet z jedną grupą, nadal masz korzyść z możliwości wyboru całej grupy naraz.

Pokazuje, że można nazwać grupę jako "Wybierz wszystkie", aby było bardziej uniwersalne (5:34–5:42). Wybranie tej górnej pozycji kolejno przełączy wszystkie poniższe elementy (5:44–5:47). Możesz także użyć wyróżnienia koloru — na przykład, aby sprawić, że etykieta grupy będzie zielona lub niebieska, aby ją odróżnić — aby skierować użytkownika do domyślnej lub wymagańej grupy. To daje dużą elastyczność w sposobie strukturacji zapytań.

Podsumowanie

Tim kończy wideo podsumowując: tak robi się zapytania o wielokrotne wybory z Spectre Console, w tym dodawanie grup wyborów do grupowego wyboru (5:50–5:53). Jak zawsze, kod źródłowy jest w opisie (5:57).

Kluczowe wnioski z omówienia Tima Coreya

  • Wielokrotne wybory Spectre Console pozwalają użytkownikom wybrać zero, jeden lub wiele elementów z listy.

  • Dodaj tytuł i tekst instrukcji, aby skierować użytkowników; możesz użyć koloru akcentu, aby wyróżnić wymagańą informację.

  • Użyj .AddChoices() dla prostej listy; użyj .AddChoiceGroup() dla wielu lub zgrupowanych list.

  • Użytkownicy naciskają Spację, aby przełączać wybory, i Enter, aby zaakceptować.

  • Same etykiety grup mogą być przełączane, aby wybrać wszystkie elementy naraz.

  • Zapytanie może wyświetlać złożone obiekty z właściwością ChoiceLabel, jednocześnie zwracając podkładowy obiekt.

  • Rozmiar strony i przewijanie pomagają, gdy masz więcej wyborów niż mieści się na jednej stronie.

Podążając za przykładem Tima Coreya — z jego rzeczywistymi listami zwykłych nazwisk i nazwisk rodziny — możesz szybko wdrożyć czyste, przyjazne użytkownikowi listy z wielokrotnymi wyborami we własnych aplikacjach Spectre Console.

Hero Worlddot related to Listy z wyborem wielokrotnym z grypowaniem - seria Spectre Console
Hero Affiliate related to Listy z wyborem wielokrotnym z grypowaniem - 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