Zum Fußzeileninhalt springen
Iron Academy Logo
C#-Anwendung
C#-Anwendung

Andere Kategorien

Mehrfachauswahllisten mit Gruppierungen - Spectre Console Series

Tim Corey
6m 21s

Spectre Console ist eine .NET-Bibliothek, mit der Sie einfache C#-Konsolenanwendungen in visuell ansprechende, interaktive Tools verwandeln können. Anstelle von statischen Schwarz-Weiß-Bildschirmen können Sie die Benutzer mit Farben, Layouts und interaktiven Auswahlmöglichkeiten auffordern. In diesem Artikel befassen wir uns mit einer der leistungsstärksten Eingabefunktionen - den Mehrfachauswahl-Eingabeaufforderungen - und speziell mit der Verwendung von Auswahlgruppen.

Zu diesem Zweck folgen wir der Anleitung von Tim Corey aus seinem Video "Multi-Select Lists with Groupings - Spectre Console Series". Tim erklärt, zeigt Code und führt ihn aus, damit Sie sehen können, wie Sie ihn in Ihrem eigenen Projekt implementieren können. Unter jeder Überschrift ist die ungefähre Zeit angegeben, zu der das Thema im Video vorkommt, damit Sie direkt zum Thema springen können.

Einführung in das Multi-Selection Prompt

Zu Beginn des Videos erinnert Tim Corey die Zuschauer daran, dass Sie mit Spectre Console "Ihre C#-Konsolenanwendungen in visuell ansprechende, informative Anwendungen verwandeln können" (0:02). In seiner Serie wird die Bibliothek Stück für Stück in zehnminütigen Abschnitten vorgestellt. In diesem Video geht es darum, den Benutzer aufzufordern, eine oder mehrere Optionen aus einer Liste oder aus mehreren Listen mit Hilfe der Mehrfachauswahl-Eingabeaufforderung auszuwählen (0:18).

Einrichten einer einfachen Mehrfachauswahl-Eingabeaufforderung

Tim beginnt damit, zwei Listen zu zeigen, die er bereits in seinem Code hat:

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

Er erstellt eine List namens favoriteNames, da der Benutzer null, eins oder viele Elemente auswählen kann (0:53-1:01). Anschließend ordnet er sie dem Ergebnis einer AnsiConsole.Prompt mit einer neuen MultiSelectionPrompt() zu (1:05-1:16).

Tim betont, dass jede Auswahl ein String-Objekt ist und die Eingabeaufforderung ein Array oder eine Liste der vom Benutzer ausgewählten Auswahlen zurückgibt (1:20-1:26).

Anschließend fügt er einen benutzerdefinierten Titel hinzu, um den Benutzer zu führen:

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

Damit wird eine klare Überschrift am Anfang der Eingabeaufforderung gesetzt (1:31-1:50).

Hinzufügen von Anweisungstext zur Benutzerführung

Tim beschränkt sich nicht nur auf einen Titel. Außerdem fügt er Anweisungstext hinzu, um dem Benutzer zu erklären, wie er mit der Eingabeaufforderung umgehen soll (1:50).

Er schreibt etwa so:

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

Bei 1:56 erklärt er, dass man sie sogar mit Farben oder anderem Styling formatieren kann - Spectre Console unterstützt die Anpassung von Akzentfarben, so dass Ihre Anweisungen in Grün, Blau, Gelb, Grau oder Rot erscheinen können, um wichtige Teile hervorzuheben.

Der wichtigste Teil ist, dem Benutzer zu erklären: Drücken Sie die Leertaste, um zwischen den Elementen zu wechseln, drücken Sie die Eingabetaste, um Ihre Antwort zu bestätigen (2:12). Dadurch wird das Skript für den Benutzer leicht verständlich.

Hinzufügen von Auswahlmöglichkeiten und Anzeigen der Ergebnisse

Als Nächstes fügt Tim die eigentlichen Daten hinzu. Zu Beginn hält er es mit einer Liste einfach. Er verwendet .AddChoices(usualNames) (2:24-2:34).

Dann schreibt er eine unkomplizierte foreach-Schleife, um die Auswahl des Benutzers auf der Konsole auszugeben (2:38-2:52):

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

Er kümmert sich nicht um die Formatierung - er zeigt nur, dass die Mehrfachauswahl-Eingabeaufforderung funktioniert (2:53-3:00).

Tim führt das Programm auf dem Terminal aus (3:00). Die Eingabeaufforderung zeigt die Liste der Namen. Mit der Leertaste wählt er einige Begriffe aus - wie "Tim Corey" und "Sue Storm" - und drückt dann die Eingabetaste, woraufhin die Konsole die ausgewählten Optionen ausgibt (3:07-3:15). Hier sehen Sie die einfachste Arbeitsversion.

Spectre Console Multi Select Lists Groupings 1 related to Hinzufügen von Auswahlmöglichkeiten und Anzeigen der Ergebnisse

Umstellung auf mehrere Listen mit Auswahlgruppen

Nachdem die grundlegende Einrichtung funktioniert hat, macht Tim die Dinge "ein bisschen interessanter" (3:22). Statt nur einer Liste hat er zwei Listen: usualNames und familyNames.

Er kommentiert den Originalaufruf .AddChoices() und stellt .AddChoiceGroup() vor (3:32-3:38). Dies ermöglicht es ihm, verwandte Begriffe unter einem Label zu gruppieren. Er schreibt:

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

Nun wird jede Gruppe in der Eingabeaufforderung separat erscheinen. Diese Struktur ist besonders hilfreich, wenn Sie Dutzende von Optionen präsentieren und diese in Seiten oder Gruppen gliedern möchten. Die Mehrfachauswahl-Eingabeaufforderung der Spectre-Konsole verfügt über eine PageSize-Eigenschaft, mit der Sie steuern können, wie viele Elemente auf einmal angezeigt werden, wenn mehr Auswahlmöglichkeiten vorhanden sind, als auf einen Bildschirm passen, auch wenn das Transkript dies nicht zeigt.

Wie die Gruppenauswahl zur Laufzeit funktioniert

Tim speichert und führt den Code erneut aus (4:11). Die neue Eingabeaufforderung zeigt beide Gruppen mit klaren Bezeichnungen an. Wenn er den Cursor auf die Bezeichnung "Die üblichen Namen" bewegt und die Leertaste drückt, werden alle Elemente in dieser Gruppe auf einmal ausgewählt (4:17-4:19).

Er weist auch darauf hin, dass die Spectre-Konsole automatisch einen Bildlauf durchführt, wenn die Liste länger als der Bildschirm ist - Sie sehen dann eine graue Meldung mit dem Hinweis "Bewegen Sie sich nach oben und unten, um mehr Auswahlmöglichkeiten zu erhalten" (4:25-4:31). Das ist ein Standardverhalten für scrollbare Listen.

Tim zeigt, wie man zu den Familiennamen scrollt, sie auswählt und dann eine Person wie Sue Storm auswählt (4:39-4:43). Wenn er die Eingabetaste drückt, druckt die Konsole alle ausgewählten Namen zusammen aus (4:45). Hier wird gezeigt, wie die Funktion mehrere Auswahlmöglichkeiten anzeigt, die Sie umschalten können, und dann eine einzige Liste der ausgewählten Objekte zurückgibt.

Spectre Console Multi Select Lists Groupings 2 related to Wie die Gruppenauswahl zur Laufzeit funktioniert

Die Mehrfachauswahl-Eingabeaufforderung im Vergleich zur Auswahl-Eingabeaufforderung verstehen

Um 5:00 Uhr fasst Tim zusammen, was er gezeigt hat. Die Mehrfachauswahl-Eingabeaufforderung funktioniert wie die normale Auswahl-Eingabeaufforderung, gibt aber eine Liste des übergebenen Typs zurück (5:03-5:08).

Sie können Anweisungstexte hinzufügen, wie er es getan hat, und Sie können Auswahlgruppen verwenden, um ganze Gruppen zu organisieren und optional mit einem Tastendruck auszuwählen (5:14-5:18). Dadurch werden große oder komplexe Menüs für den Benutzer viel übersichtlicher.

Dies ist auch ein Hinweis auf die Fähigkeit von Spectre Console, mit komplexen Objekten zu arbeiten: Das Objekt Ihrer Wahl kann mehr als ein String sein. Sie können ein Objekt mit einer ChoiceLabel-Eigenschaft versehen, um zu steuern, was angezeigt wird, und gleichzeitig das vollständige Objekt zurückerhalten, wenn der Benutzer seine Antwort akzeptiert.

Flexible Verwendung von Auswahlgruppen und Bezeichnungen

Tim stellt auch klar, dass Sie nicht zwei Gruppen haben müssen, um .AddChoiceGroup() zu verwenden (5:20-5:24). Auch bei einer einzelnen Gruppe haben Sie den Vorteil, dass Sie die gesamte Gruppe auf einmal auswählen können.

Er zeigt, dass Sie die Gruppe z. B. "Select All" nennen können, um allgemeiner zu sein (5:34-5:42). Wenn Sie den obersten Eintrag auswählen, werden alle darunter liegenden Einträge umgeschaltet (5:44-5:47). Sie können auch eine farbliche Hervorhebung verwenden - zum Beispiel, indem Sie die Gruppenbeschriftung grün oder blau machen, um sie zu kennzeichnen - um den Benutzer zur Standard- oder zur gewünschten Gruppe zu führen. Dies gibt Ihnen eine große Flexibilität bei der Strukturierung Ihrer Eingabeaufforderungen.

Zusammenfassung

Tim beendet das Video mit einer Zusammenfassung: So funktioniert die Mehrfachauswahl von Eingabeaufforderungen mit Spectre Console, einschließlich des Hinzufügens von Auswahlgruppen für gruppierte Auswahl (5:50-5:53). Wie immer befindet sich der Quellcode in der Beschreibung (5:57).

Die wichtigsten Erkenntnisse aus Tim Coreys Durchgang

  • Mit der Mehrfachauswahl der Spectre-Konsole können Benutzer null, ein oder mehrere Elemente aus einer Liste auswählen.

  • Fügen Sie einen Titel und einen Anleitungstext hinzu, um die Benutzer zu führen; sie können Akzentfarben verwenden, um erforderliche Informationen hervorzuheben.

  • Verwenden Sie .AddChoices() für eine einfache Liste; verwenden Sie .AddChoiceGroup() für mehrere oder gruppierte Listen.

  • Die Benutzer drücken die Leertaste, um die Auswahl zu ändern, und die Eingabetaste, um zu akzeptieren.

  • Die Gruppenbeschriftungen selbst können umgeschaltet werden, um alle Elemente auf einmal auszuwählen.

  • Die Eingabeaufforderung kann komplexe Objekte mit einer ChoiceLabel-Eigenschaft anzeigen und gleichzeitig das zugrunde liegende Objekt zurückgeben.

  • Seitengröße und Bildlauf helfen, wenn Sie mehr Auswahlmöglichkeiten haben, als auf eine Seite passen.

Indem Sie dem Beispiel von Tim Corey folgen - mit seinen tatsächlichen Listen von üblichen Namen und Familiennamen - können Sie schnell saubere, benutzerfreundliche Mehrfachauswahllisten in Ihren eigenen Spectre Console-Anwendungen implementieren.

Hero Worlddot related to Mehrfachauswahllisten mit Gruppierungen - Spectre Console Series
Hero Affiliate related to Mehrfachauswahllisten mit Gruppierungen - Spectre Console Series

Verdienen Sie mehr, indem Sie teilen, was Sie lieben

Erstellen Sie Inhalte für Entwickler, die mit .NET, C#, Java, Python oder Node.js arbeiten? Verwandeln Sie Ihr Fachwissen in ein zusätzliches Einkommen!

Iron Support Team

Wir sind 24 Stunden am Tag, 5 Tage die Woche online.
Chat
E-Mail
Rufen Sie mich an