IRONSOFTWAREHOME

多選列表與分組 - Spectre Console 系列

Multi-Select Lists with Groupings - Spectre Console Series

Tim Corey

6m 21s

Spectre Console 是一個 .NET 程式庫,讓您可以將普通的 C# 控制台應用程式轉變成視覺上豐富的互動工具。 取代靜態的黑白螢幕,您可以使用顏色、佈局和互動選項來提示使用者。 在本文中,我們將深入探討其最強大的輸入功能之一——多選提示,特別是如何使用選擇群組。

我們將按照 Tim Corey 在他的视频"Multi-Select Lists with Groupings – Spectre Console Series"中的步驟進行。 Tim 進行了解釋、展示程式碼並執行,這樣您便可以了解如何在自己的專案中實現這一功能。 以下,每個標題都註明了影片中該主題出現的近似時間,讓您可以直接跳轉。

多選提示的介紹

在影片開始時,Tim Corey 提醒觀眾,Spectre Console 允許您"將 C# 控制台應用程式轉變成視覺上迷人的資訊應用程式"(0:02)。 他在影片系列中以十分鐘為一段,逐步介紹程式庫。 這個特別的影片專注於使用多選提示,要求使用者從一個或多個列表中選擇一個或多個選項(0:18)。

設置簡單的多選提示

Tim 一開始展示了他的程式碼中已經存在的兩個列表:

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

他建立了一個名為 favoriteNames 的 List<string> ,因為使用者可能會選擇零、一個或多個項目(0:53–1:01)。 然後,他將其分配給 AnsiConsole.Prompt 與新的 MultiSelectionPrompt<string>() 的結果(1:05–1:16)。

Tim 強調,每個選項都將是一個字串物件,提示將返回一個或多個使用者選擇的選項的陣列或列表(1:20–1:26)。

接著,他新增了一個自訂標題以指導使用者:

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

這會在提示的頂部設置一個清晰的標題(1:31–1:50)。

新增指導使用者操作的說明文字

Tim 不僅僅新增了標題。 他還新增了說明文字,告訴使用者如何與提示互動(1:50)。

他寫了一些像這樣的東西:

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

在 1:56,他解釋了您甚至可以用顏色或其他樣式格式化它——Spectre Console 支援自訂強調色,這樣您的說明可以以綠色、藍色、黃色、灰色或紅色顯示,以突出關鍵部分。

重要的是告知使用者:按空格鍵切換項目,按 Enter 接受您的答案(2:12)。 這使得該腳本對使用者來說非常容易使用。

新增選擇項目並顯示結果

接下來,Tim 新增了實際資料。 起初他保持簡單,僅有一個列表。他使用 .AddChoices(usualNames)(2:24–2:34)。

然後他寫了一個簡單的 foreach 迴圈,將使用者的選擇列印回控制台(2:38–2:52):

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

他不關心格式化——只是顯示多選提示的工作原理(2:53–3:00)。

Tim 在終端中運行該程式(3:00)。 提示顯示了他的名字列表。 他使用空格鍵挑選一些項目——如"Tim Corey" 和 "Sue Storm"——然後按下 Enter,控制台列印出所選擇的選項(3:07–3:15)。 這顯示了最簡單的工作版本。

使用選擇群組移動到多個列表

基礎設置工作之後,Tim 讓事情變得"更加有趣"(3:22)。 他不只是一個列表,而是有兩個列表:usualNames 和 familyNames。

他註釋掉原始的 .AddChoices() 調用,並引入了 .AddChoiceGroup()(3:32–3:38)。 這允許他在標籤下分組相關項目。 他寫道:

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

現在,每個群組將分別出現在提示中。 這種結構特別有用,當您呈現數十個選項時,想要將它們組織成頁面或群組。 即使這是文字記錄所未顯示的,Spectre Console 的多選提示還有一個 PageSize 屬性,所以當有更多選擇時,您可以控制一次顯示多少項。

瞭解運行時的群組選擇運作原理

Tim 保存並再次運行程式碼(4:11)。 新的提示顯示了雙方群組以及明顯的標籤。 如果他將游標移動到"The usual names"標籤並按下空格鍵,那麼該群組中的所有項將一次被選中(4:17–4:19)。

他還指出,如果列表長於螢幕,Spectre Console 會自動處理滾動——您會看到灰色的"上下移動以顯示更多選項"消息(4:25–4:31)。 這是可滾動列表的預設行為。

Tim 演示了滾動到家庭名稱,選擇它們,然後再選擇像 Sue Storm 這樣的個人(4:39–4:43)。 當他按下 Enter 時,控制台列印出所有選擇的組合名稱(4:45)。 這顯示了該功能如何顯示更多選項,讓您切換它們,然後返回一個所選物件的列表。

理解多選提示與選擇提示的區別

在 5:00 Tim 進行了一個總結說明。 多選提示的運作方式類似於普通的選擇提示,但返回的是您傳入的型別列表(5:03–5:08)。

您可以像他一樣新增說明文字,同時可以使用選擇群組進行組織,並選擇性地用一個鍵選擇整個群組(5:14–5:18)。 這使得大型或複雜選單更容易讓使用者管理。

這也暗示了 Spectre Console 能夠處理複雜物件:您的選擇物件可以不僅僅是字串。 您可以提供帶有 ChoiceLabel 屬性的物件,以控制顯示內容,而當使用者接受其答案時仍返回完整物件。

靈活使用選擇群組和標籤

Tim 還澄清,您不必有兩個群組來使用 .AddChoiceGroup()(5:20–5:24)。 即使只有一個群組,您仍然可以選擇整個群組。

他展示您可以將群組命名為類似於"Select All"以更具泛用性(5:34–5:42)。 然後選擇頂部條目會切換所有以下項目(5:44–5:47)。 您還可以使用顏色高亮,例如將群組標籤設置為綠色或藍色以區分它—引導使用者尋找預設或必須的群組。這讓您在設計提示時有很多靈活性。

總結

Tim 以總結結束影片:這就是如何使用 Spectre Console 進行多選提示,包括為群組選擇新增選擇群組(5:50–5:53)。 一如既往,源程式碼位於說明中(5:57)。

Tim Corey 示範的要點

  • Spectre Console 多選讓使用者可以從列表中選擇零、一個或多個項目。

  • 新增標題和說明文字以指導使用者; 您可以使用強調色來突出需要的資訊。

  • 使用 .AddChoices() 來簡單列表;使用 .AddChoiceGroup() 來多個或分組列表。

  • 使用者按空格鍵切換選擇,按 Enter 接受。

  • 群組標籤本身可以切換以一次選擇所有項目。

  • 提示可以顯示帶有 ChoiceLabel 屬性的複雜物件,同時返回基礎物件。

  • 當您有多於一頁的選項時,頁面大小和滾動功能有助於顯示。

通過遵循 Tim Corey 的範例——使用他實際的通常名稱和家庭名稱列表——您可以快速在自己的 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

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
獲取您的無義務諮詢
填寫以下表格或發送電子郵件至sales@ironsoftware.com
您的詳細資訊將始終保密。
被全球數百萬工程師信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立