Passer au contenu du pied de page
Iron Academy Logo
Application C#
Application C#

Autres catégories

Listes multi-sélection avec regroupements - Spectre Console Series

Tim Corey
6m 21s

Spectre Console est une bibliothèque .NET qui vous permet de transformer de simples applications de console C# en outils interactifs visuellement riches. Au lieu d'écrans statiques en noir et blanc, vous pouvez proposer aux utilisateurs des couleurs, des mises en page et des choix interactifs. Dans cet article, nous allons nous pencher sur l'une de ses fonctions de saisie les plus puissantes - les invites multisélection - et plus particulièrement sur la manière d'utiliser les groupes de choix.

Pour ce faire, nous allons suivre les instructions de Tim Corey dans sa vidéo "Listes multi-sélectionnées avec regroupements - Spectre Console Series". Tim explique, montre le code et l'exécute, afin que vous puissiez voir comment le mettre en œuvre dans votre propre projet. Ci-dessous, chaque titre indique le moment approximatif où le sujet apparaît dans la vidéo, afin que vous puissiez y accéder directement.

Introduction à l'invite de multisélection

Au début de la vidéo, Tim Corey rappelle que Spectre Console permet de "transformer vos applications de console C# en applications visuellement attrayantes et informatives" (0:02). Sa série présente la bibliothèque pièce par pièce, par tranches de dix minutes. Cette vidéo se concentre sur le fait de demander à l'utilisateur de choisir un ou plusieurs choix dans une liste ou dans plusieurs listes à l'aide de l'invite de multisélection (0:18).

Mise en place d'une invite multisélection simple

Tim commence par montrer deux listes qu'il a déjà dans son code :

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

Il crée une List appelée favoriteNames car l'utilisateur peut sélectionner zéro, un ou plusieurs éléments (0:53-1:01). Il l'affecte ensuite au résultat d'une AnsiConsole.Prompt avec une nouvelle MultiSelectionPrompt() (1:05-1:16).

Tim insiste sur le fait que chaque choix sera un objet de type chaîne de caractères et que l'invite renverra un tableau ou une liste des choix sélectionnés par l'utilisateur (1:20-1:26).

Il ajoute ensuite un titre personnalisé pour guider l'utilisateur :

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

Cela permet de mettre en place un en-tête clair en haut de l'invite (1:31-1:50).

Ajouter un texte d'instruction pour guider l'utilisateur

Tim ne s'arrête pas à un simple titre. Il ajoute également un texte d'instruction pour indiquer à l'utilisateur comment interagir avec l'invite (1:50).

Il écrit quelque chose comme :

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

À 1:56, il explique que vous pouvez même la mettre en forme avec des couleurs ou d'autres éléments de style - la console Spectre prend en charge la personnalisation de la couleur d'accent, de sorte que vos instructions peuvent apparaître en vert, bleu, jaune, gris ou rouge pour mettre en évidence les parties clés.

L'important est de dire à l'utilisateur Appuyez sur la barre d'espacement pour passer d'un élément à l'autre, appuyez sur Entrée pour accepter votre réponse (2:12). Cela rend le texte facile à comprendre pour l'utilisateur.

Ajouter des choix et afficher les résultats

Ensuite, Tim ajoute les données réelles. Au départ, il se contente d'une seule liste. Il utilise .AddChoices(usualNames) (2:24-2:34).

Il écrit ensuite une boucle foreach simple pour afficher les sélections de l'utilisateur sur la console (2:38-2:52) :

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

Il ne se préoccupe pas de la mise en forme - il montre simplement que l'invite multi-sélection fonctionne (2:53-3:00).

Tim exécute le programme dans le terminal (3:00). L'invite affiche sa liste de noms. Il utilise la barre d'espacement pour choisir quelques éléments, comme "Tim Corey" et "Sue Storm", puis appuie sur Entrée et la console imprime les options choisies (3:07-3:15). Ceci est une démonstration de la version de travail la plus simple.

Spectre Console Multi Select Lists Groupings 1 related to Ajouter des choix et afficher les résultats

Passer à des listes multiples avec des groupes de choix

Une fois que la configuration de base fonctionne, Tim rend les choses "un peu plus intéressantes" (3:22). Au lieu d'une seule liste, il en a deux : usualNames et familyNames.

Il commente l'appel original .AddChoices() et introduit .AddChoiceGroup() (3:32-3:38). Cela lui permet de regrouper les éléments connexes sous une même étiquette. Il écrit :

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

Désormais, chaque groupe apparaîtra séparément dans l'invite. Cette structure est particulièrement utile lorsque vous présentez des dizaines d'options et que vous souhaitez les organiser en pages ou en groupes. Même si la transcription ne le montre pas, l'invite multi-sélection de Spectre Console possède également une propriété PageSize qui vous permet de contrôler le nombre d'éléments qui s'affichent en même temps lorsqu'il y a plus de choix qu'il n'y en a sur un seul écran.

Comment fonctionne la sélection de groupe à l'exécution

Tim enregistre et exécute à nouveau le code (4:11). Le nouveau message-guide présente les deux groupes avec des étiquettes claires. S'il déplace le curseur sur l'étiquette "The usual names" et appuie sur la barre d'espacement, tous les éléments de ce groupe sont sélectionnés en même temps (4:17-4:19).

Il souligne également que la console Spectre gère automatiquement le défilement si la liste est plus longue que l'écran - vous verrez un message "déplacer vers le haut et vers le bas pour révéler plus de choix" en gris (4:25-4:31). C'est le comportement par défaut des listes déroulantes.

Tim montre comment faire défiler les noms de famille, les sélectionner, puis sélectionner également une personne comme Sue Storm (4:39-4:43). Lorsqu'il appuie sur Entrée, la console imprime tous les noms choisis combinés (4:45). Ceci montre comment la fonction affiche plus de choix, vous permet de les faire basculer, puis renvoie une liste unique des objets sélectionnés.

Spectre Console Multi Select Lists Groupings 2 related to Comment fonctionne la sélection de groupe à l'exécution

Compréhension de l'invite de multisélection par rapport à l'invite de sélection

À 5:00, Tim résume ce qu'il a montré. L'invite de multisélection fonctionne comme l'invite de sélection classique, mais renvoie une liste de n'importe quel type (5:03-5:08).

Vous pouvez ajouter du texte d'instruction comme il l'a fait, et vous pouvez utiliser des groupes de choix pour organiser et éventuellement sélectionner des groupes entiers d'une seule touche (5:14-5:18). Les menus volumineux ou complexes deviennent ainsi beaucoup plus faciles à gérer pour l'utilisateur.

Cela fait également allusion à la capacité de Spectre Console à travailler avec des objets complexes : l'objet de votre choix peut être plus qu'une chaîne de caractères. Vous pouvez fournir un objet avec une propriété ChoiceLabel pour contrôler ce qui est affiché, tout en recevant l'objet complet en retour lorsque l'utilisateur accepte sa réponse.

Utilisation flexible des groupes de choix et des étiquettes

Tim précise également qu'il n'est pas nécessaire d'avoir deux groupes pour utiliser AddChoiceGroup() (5:20-5:24). Même avec un seul groupe, vous avez l'avantage de pouvoir sélectionner l'ensemble du groupe en une seule fois.

Il montre que vous pouvez nommer le groupe "Select All" pour être plus générique (5:34-5:42). La sélection de l'entrée supérieure permet de faire basculer tous les éléments inférieurs (5:44-5:47). Vous pouvez également utiliser la mise en évidence des couleurs - par exemple en rendant l'étiquette du groupe verte ou bleue pour la distinguer - pour guider l'utilisateur vers le groupe par défaut ou le groupe requis. Vous disposez ainsi d'une grande souplesse dans la structuration de vos messages-guides.

Conclusion

Tim termine la vidéo en résumant : voici comment réaliser des invites à sélection multiple avec Spectre Console, y compris l'ajout de groupes de choix pour la sélection groupée (5:50-5:53). Comme toujours, le code source se trouve dans la description (5:57).

Principaux enseignements de la présentation de Tim Corey

  • La multi-sélection de la console Spectre permet aux utilisateurs de choisir zéro, un ou plusieurs éléments dans une liste.

  • Ajoutez un titre et un texte d'instruction pour guider les utilisateurs ; vous pouvez utiliser des couleurs d'accentuation pour mettre en évidence les informations requises.

  • Utilisez .AddChoices() pour une liste simple ; utilisez .AddChoiceGroup() pour des listes multiples ou groupées.

  • Les utilisateurs appuient sur Espace pour alterner les sélections et sur Entrée pour accepter.

  • Les étiquettes de groupe elles-mêmes peuvent être basculées pour sélectionner tous les éléments à la fois.

  • L'invite peut afficher des objets complexes avec une propriété ChoiceLabel tout en renvoyant l'objet sous-jacent.

  • La taille de la page et le défilement sont utiles lorsqu'il y a plus de choix qu'il n'est possible d'en faire sur une seule page.

En suivant l'exemple de Tim Corey - avec ses listes réelles de noms usuels et de noms de famille - vous pouvez rapidement mettre en œuvre des listes multi-sélection propres et conviviales dans vos propres applications de la Spectre Console.

Hero Worlddot related to Listes multi-sélection avec regroupements - Spectre Console Series
Hero Affiliate related to Listes multi-sélection avec regroupements - Spectre Console Series

Gagnez plus en partageant ce que vous aimez

Vous créez du contenu pour les développeurs travaillant avec .NET, C#, Java, Python ou Node.js ? Transformez votre expertise en revenu supplémentaire !

Équipe de soutien Iron

Nous sommes en ligne 24 heures sur 24, 5 jours sur 7.
Chat
Email
Appelez-moi