跳過到頁腳內容
Iron Academy Logo
C# 應用程式
C# 應用程式

其他分類

內容面板和提示框 - Spectre Console系列

Tim Corey
7m 51s

Spectre.Console 是一個 NuGet 套件,使 .NET 開發人員能夠創建視覺上豐富的控制台應用程式。 在他的 Spectre Console 系列中,Tim Corey 展示了如何使用互動提示、表格、進度顯示等功能,將原本簡單的控制台窗口轉變為更加專業的樣子。

在本文中,我們將通過 Tim Corey 的影片"Content Panels and Callouts – Spectre Console Series"來深入了解 Spectre Console 的面板功能。通過 Tim 的示例,我們會學習如何創建面板、探索其功能並在控制台的可用空間內以不同風格顯示數據。

創建一個基本的 Spectre Console 面板

Tim 在影片開始時(0:00)提醒我們,Spectre.Console 允許您將 C# 控制台應用程式變成視覺上吸引人且資訊豐富的應用程式。 在本課程中(0:15),我們將創建面板,這些面板可以作為簡單的提示框,甚至可以根據需要作為小型表格使用。

在 0:34,Tim 直接在 Visual Studio 上寫了一個示例。 他展示了如何創建一個新的面板實例:

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

他指出(0:47)AnsiConsole.Write() 接受一個可渲染的對象,由於 Panel 實現了 IRenderable,所以可以很完美地適合。 在 1:02 執行程式碼時,將顯示一個簡單的方框,圍繞著"Tim Corey"這段文字。即使這一點小空間也可以用於提示標註、突出顯示提示或將用戶輸入與其他控制台輸出區分開來。

Spectre Console Content Panels Callouts 1 related to 創建一個基本的 Spectre Console 面板

探索面板功能:邊框與填充

接著 Tim 會展示面板的功能。 在 1:22,他調整了邊框樣式:

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

這給面板帶來一個圓角邊框——這是可用不同風格之一。 他指出您也可以選擇雙層邊框或其他選項,以配合自訂的顏色主題或藍色和綠色的點綴。

在 1:42 時,Tim 調整了面板內的填充:

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

他解釋(2:16)說,控制台中的填充不像網頁上的像素,它是基於字元寬度和行回車。 像 5 這樣的大數字會創建一個大面板,填滿很多可用空間。 他逐一計算空間以展示填充如何運作(2:35)。

這種微調內容周圍空間的能力使您能設計符合布局的面板,無論您是在顯示一個變量表、一個條形圖或其他數據。

添加標題與自訂樣式

在 3:37,Tim 添加了面板的標題:

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

在 3:51 執行程式碼時,標題會出現在邊框中。 但它緊貼著內容。 他通過改變填充進行調整(4:04):

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

這在標題與文字之間創造了一點空間。 Tim 指出(4:16)使用標題和間距可以清楚地標記您的面板——這在顯示任務進度、即時顯示或甚至是包含顯示進度條的長時間運行任務時很有用。

在面板內顯示列表

然後 Tim 演示如何將字串列表放入一個面板中。 在 4:26,他從先前的課程中帶入了一個名字列表,並展示如何將其連接為一個字串:

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

這將列表壓縮為一個包含換行的字串(5:02)。 執行時(5:28),列表整齊地顯示在面板中,每個項目都在自己的行上。這種技術讓您能以強類型方式呈現數據或物件屬性,但以文字形式渲染。

Spectre Console Content Panels Callouts 2 related to 在面板內顯示列表

Tim 還強調(5:44)您可以使用豐富的文字標記來為特定項目添加自訂顏色。 例如:

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

這展示了 Spectre Console 面板不僅可以處理普通字串,還可以處理樣式化的內容,允許使用主題、粗體字或顏色編碼項目。

Spectre Console Content Panels Callouts 3 related to 在面板內顯示列表

使用標記和可渲染對象居中內容

在 6:19,Tim 回答了如何居中內容的問題。 一個普通字串不會居中。 相反,您必須使用一個可渲染對象。 他演示(6:34):

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

這將字串轉換為 Markup,調用 .Centered(),並將其分配到面板。 執行程式碼(7:01)顯示所有名字居中。 這特別有用,如果您在創建一個新表格、新條形圖或任何互動式控制時,希望內容水平對齊在可用空間中。

Spectre Console Content Panels Callouts 4 related to 使用標記和可渲染對象居中內容

Tim 也指出(7:07)面板是 IRenderable,因此您可以將它們嵌套在表格或其他面板內。 這使得構建複合顯示成為可能:例如,一個面板包含提示、一個變量表和一個條形圖並排顯示,或者使用面板顯示不同任務的文件進度。

面板作為控制台應用程式的構建塊

由於 Tim 在結尾(7:14),重申面板是 IRenderable,這意味著您可以將它們插入任何 Spectre.Console 期望可渲染對象的位置——如表格內、即時顯示內或其他布局中。 這種靈活性使您能將面板與其他 Spectre.Console 組件結合,如互動提示、顯示進度條和自訂顏色主題,以創建精緻的 .NET 控制台應用程式。

從 Tim 的視頻中獲得的關鍵資訊

  • Spectre Console 面板是一種簡單而強大的方式來在控制台應用程式中突出顯示內容、提示用戶輸入或框架數據。

  • 面板支持不同風格:圓角、雙層、自定義標題、填充以控制空間。

  • 您可以顯示列表,使用豐富的文字標記為自定義顏色主題,甚至可以使用 Markup.Centered() 將內容居中。

  • 因為面板是可渲染的對象,您可以將它嵌套在表格中,與進度顯示或條形圖結合,構建複雜的互動布局。

  • 所有這些僅需安裝 NuGet 套件並在您的 .NET 或 Visual Studio 專案中使用其強型別的 API 就能實現。

通過跟隨 Tim Corey 的視頻,您可以自信地開始使用 Spectre.Console 面板來創建精緻、資料豐富的控制台體驗,帶有標題、自定義主題和整齊格式化的輸出——所有這些都在不離開控制台環境的情況下完成。

Hero Worlddot related to 內容面板和提示框 - Spectre Console系列
Hero Affiliate related to 內容面板和提示框 - Spectre Console系列

通過分享您所愛的東西賺得更多

您是否在為使用.NET、C#、Java、Python或Node.js的開發者創建內容?將您的專業知識轉化為額外收入!

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我