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

Andere Kategorien

Inhaltspanels und Callouts - Spectre Console Series

Tim Corey
7m 51s

Spectre.Console ist ein NuGet-Paket, mit dem .NET-Entwickler visuell ansprechende Konsolenanwendungen erstellen können. In seiner Spectre Console Series zeigt Tim Corey, wie man Funktionen wie interaktive Eingabeaufforderungen, Tabellen, Fortschrittsanzeigen und mehr verwendet, um ein einfaches Konsolenfenster in etwas viel Professionelleres zu verwandeln.

In diesem Artikel werfen wir einen tieferen Blick auf die Funktion Spectre Console Panel, indem wir Tim Coreys Video "Content Panels and Callouts - Spectre Console Series" durchgehen Anhand von Tims Beispielen werden wir sehen, wie man Panels erstellt, ihre Funktionen erkundet und Daten in verschiedenen Stilen anzeigt - und das alles innerhalb des verfügbaren Platzes der Konsole.

Erstellen eines einfachen Spectre-Konsolenfeldes

Zu Beginn des Videos (0:00) erinnert Tim daran, dass Sie mit Spectre.Console Ihre C#-Konsolenanwendungen in visuell ansprechende, informative Anwendungen verwandeln können. In dieser Lektion (0:15) werden wir Panels erstellen, die je nach Bedarf als einfache Callouts oder sogar als Mini-Tabellen fungieren können.

Bei 0:34 schreibt Tim ein Beispiel direkt in Visual Studio. Er zeigt, wie man eine neue Instanz eines Panels erstellt:

var panel = new("Tim Corey");
AnsiConsole.Write(panel);
var panel = new("Tim Corey");
AnsiConsole.Write(panel);

Er stellt fest (0:47), dass AnsiConsole.Write() ein renderbares Objekt akzeptiert - und da ein Panel IRenderable implementiert, passt es genau hinein. Wenn Sie den Code bei 1:02 ausführen, wird ein einfacher Kasten um den Text "Tim Corey" angezeigt Selbst dieses kleine Feld kann nützlich sein, um einen Hinweis aufzurufen, eine Eingabeaufforderung hervorzuheben oder Benutzereingaben von anderen Konsolenausgaben zu trennen.

Spectre Console Content Panels Callouts 1 related to Erstellen eines einfachen Spectre-Konsolenfeldes

Panel-Funktionen erforschen: Ränder und Auffüllung

Anschließend demonstriert Tim die Funktionen des Panels. Bei 1:22 passt er den Stil der Umrandung an:

panel.Border = BoxBorder.Rounded;
panel.Border = BoxBorder.Rounded;

Dadurch erhält das Panel einen abgerundeten Rand - einer der verschiedenen verfügbaren Stile. Er weist darauf hin, dass Sie auch doppelte Umrandungen oder andere Optionen wählen können, um Ihre benutzerdefinierten farbcodierten Themen oder blaue und grüne Akzente anzupassen.

Bei 1:42 passt Tim die Polsterung im Panel an:

panel.Padding = new(2, 0);
panel.Padding = new(2, 0);

Er erklärt (2:16), dass Auffüllungen in der Konsole nicht wie Pixel im Web sind - sie basieren auf Zeichenbreite und Zeilenumbrüchen. Eine große Zahl wie 5 erzeugt ein großes Feld, das einen großen Teil des verfügbaren Bereichs ausfüllt. Er zählt den Platz aus, um zu zeigen, wie das Auffüllen funktioniert (2:35).

Durch die Möglichkeit, den Raum um den Inhalt herum fein abzustimmen, können Sie Panels entwerfen, die zu Ihrem Layout passen, egal ob Sie eine Variablentabelle, ein Balkendiagramm oder andere Daten anzeigen.

Hinzufügen einer Kopfzeile und Anpassen von Stilen

Bei 3:37 fügt Tim dem Panel eine Überschrift hinzu:

panel.Header("My Name");
panel.Header("My Name");

Wenn er den Code bei 3:51 ausführt, erscheint der Titel am Rand. Aber sie steht in direktem Zusammenhang mit dem Inhalt. Er behebt dies (4:04), indem er die Füllung ändert:

panel.Padding = new (1, 0);
panel.Padding = new (1, 0);

Dies schafft ein wenig Platz zwischen der Überschrift und dem Text. Tim weist darauf hin (4:16), dass die Verwendung von Kopfzeilen und Abständen eine klare Beschriftung der Bedienfelder ermöglicht - nützlich, wenn Sie den Fortschritt einer Aufgabe, eine Live-Anzeige oder sogar eine lange laufende Aufgabe mit einem Fortschrittsbalken anzeigen möchten.

Anzeigen von Listen innerhalb eines Panels

Anschließend demonstriert Tim, wie man eine Liste von Strings in ein Panel einfügt. Bei 4:26 bringt er eine Liste von Namen aus einer früheren Lektion ein und zeigt, wie man sie zu einer einzigen Zeichenkette verbindet:

string panelInfo = string.Join('\n', names);
var panel = new Panel(panelInfo)
    .Header("Default Names");
string panelInfo = string.Join('\n', names);
var panel = new Panel(panelInfo)
    .Header("Default Names");

Dies fasst die Liste in eine Zeichenkette mit Zeilenumbrüchen zusammen (5:02). Ausführen (5:28) zeigt die Liste übersichtlich im Panel an, jedes Element in einer eigenen Zeile. Mit dieser Technik können Sie Daten oder Objekteigenschaften in einer stark typisierten Art und Weise darstellen, die jedoch als Text gerendert wird.

Spectre Console Content Panels Callouts 2 related to Anzeigen von Listen innerhalb eines Panels

Tim hebt auch hervor (5:44), dass Sie Rich Text Markup verwenden können, um bestimmten Elementen eine eigene Farbe zu geben. Zum Beispiel:

"[red]Bilbo Baggins[/]"
"[red]Bilbo Baggins[/]"

Dies zeigt, wie ein Spectre-Konsolenfeld nicht nur einfache Zeichenketten, sondern auch gestaltete Inhalte verarbeiten kann, indem es Themen, fettgedruckten Text oder farbcodierte Elemente ermöglicht.

Spectre Console Content Panels Callouts 3 related to Anzeigen von Listen innerhalb eines Panels

Inhaltszentrierung mit Markup und renderbaren Objekten

Bei 6:19 beantwortet Tim die Frage, wie man Inhalte zentrieren kann. Eine einfache Zeichenkette reicht nicht aus. Stattdessen müssen Sie ein renderbares Objekt verwenden. Er demonstriert (6:34):

Panel panel = new(new Markup(panelInfo).Centered());
Panel panel = new(new Markup(panelInfo).Centered());

Dies konvertiert die Zeichenfolge in ein Markup, ruft .Centered() auf und weist sie dem Panel zu. Beim Ausführen des Codes (7:01) werden alle Namen zentriert angezeigt. Dies ist besonders nützlich, wenn Sie eine neue Tabelle, ein neues Balkendiagramm oder ein interaktives Steuerelement erstellen und der Inhalt horizontal im verfügbaren Raum ausgerichtet werden soll.

Spectre Console Content Panels Callouts 4 related to Inhaltszentrierung mit Markup und renderbaren Objekten

Tim weist auch darauf hin (7:07), dass Panels IRenderable sind, so dass Sie sie in Tabellen oder andere Panels einfügen können. So ist es möglich, zusammengesetzte Anzeigen zu erstellen: z. B. ein Panel, das eine Eingabeaufforderung, eine Vari-Tabelle und ein Balkendiagramm nebeneinander enthält, oder die Verwendung von Panels zur Anzeige des Dateifortschritts für verschiedene Aufgaben.

Panels als Bausteine in Konsolenanwendungen

Zum Abschluss (7:14) weist Tim noch einmal darauf hin, dass Panels IRenderable sind, was bedeutet, dass Sie sie überall dort einfügen können, wo Spectre.Console ein renderbares Objekt erwartet - innerhalb von Tabellen, in Live-Anzeigen oder in anderen Layouts. Dank dieser Flexibilität können Sie Panels mit anderen Spectre.Console-Komponenten wie interaktiven Eingabeaufforderungen, Fortschrittsbalken und benutzerdefinierten farbcodierten Themen kombinieren, um ausgefeilte .NET-Konsolenanwendungen zu erstellen.

Die wichtigsten Erkenntnisse aus Tims Video

  • Ein Spectre-Konsolenfeld ist eine einfache, aber leistungsstarke Möglichkeit, Inhalte hervorzuheben, Benutzereingaben aufzufordern oder Daten in Ihrer Konsolenanwendung einzurahmen.

  • Panels unterstützen verschiedene Stile: abgerundete, doppelte, benutzerdefinierte Überschriften und Auffüllungen zur Platzkontrolle.

  • Sie können Listen anzeigen, Rich-Text-Auszeichnungen für benutzerdefinierte Farbthemen verwenden und sogar Inhalte mit Markup.Centered() zentrieren.

  • Da ein Panel ein renderbares Objekt ist, können Sie es in Tabellen verschachteln, mit Fortschrittsanzeigen oder Balkendiagrammen kombinieren und komplexe interaktive Layouts erstellen.

  • All dies ist einfach durch die Installation des NuGet-Pakets und die Verwendung seiner stark typisierten API in Ihrem .NET- oder Visual Studio-Projekt verfügbar.

Wenn Sie Tim Coreys Video folgen, können Sie selbstbewusst mit der Verwendung von Spectre.Console-Panels beginnen, um ausgefeilte, datenreiche Konsolenerlebnisse mit Kopfzeilen, benutzerdefinierten Themen und sauber formatierten Ausgaben zu erstellen - und das alles, ohne die Konsolenwelt zu verlassen.

Hero Worlddot related to Inhaltspanels und Callouts - Spectre Console Series
Hero Affiliate related to Inhaltspanels und Callouts - 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