IRONSOFTWAREHOME

Listy z wyborem wielokrotnym z grypowaniem - seria Spectre Console

Multi-Select Lists with Groupings - Spectre Console Series

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"
};

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

Tworzy List<string> 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<string>() (1:05–1:16).

Tim podkreśla, że każdy wybór będzie obiektem łańcuchowym, a monit zwróci tablicę lub listę wybranych przez użytkownika opcji (1:20–1:26).

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

.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)")

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

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.

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)

Teraz każda grupa pojawi się osobno w zapytaniu. Ta struktura jest szczególnie pomocna, gdy przedstawiasz dziesiątki opcji i chcesz je zorganizować 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 listy przewijanych.

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.

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, jak to zrobił, i możesz używać grup wyboru do organizowania i opcjonalnie wybierać całe grupy 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 wymaganej grupy. To daje dużą elastyczność w sposobie strukturacji zapytań.

Podsumowanie

Tim kończy film podsumowując: oto jak wykonać monity multi-selekcji w Spectre Console, w tym dodawanie grup wyboru dla wyboru grupowego (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ć wymaganą 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.

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