IRONSOFTWAREHOME

グループ化された複数選択リスト - Spectre Console シリーズ

グループ化による複数選択リスト - Spectre コンソール シリーズ

Tim Corey

6 分 21 秒

Spectre Console は、.NET ライブラリで、プレーンな C# コンソールアプリケーションを視覚的にリッチでインタラクティブなツールに変換できます。 白黒の静的な画面の代わりに、色やレイアウト、インタラクティブな選択肢でユーザーを促すことができます。 この記事では、最も強力な入力機能の1つである複数選択プロンプトと、特に選択グループの使い方について説明します。

Tim Corey 氏のビデオ"Multi-Select Lists with Groupings - Spectre Console Series"のウォークスルーに従って、これを行います。 Timが説明し、コードを示し、実行するので、あなた自身のプロジェクトでこれを実装する方法を見ることができます。 以下の各見出しには、そのトピックが表示されるビデオのおおよその時間が記載されていますので、そのトピックに直接ジャンプすることができます。

複数選択プロンプトの紹介

ビデオの冒頭でティム・コリーは、Spectre Console を使えば"C# コンソールアプリを視覚的に魅力的で情報量の多いアプリケーションに変えることができる"(0:02)ことを視聴者に伝えます。 このシリーズでは、ライブラリを10分ずつに分けて紹介しています。 この動画では、複数選択プロンプト(0:18)を使って、ユーザーにリストまたは複数のリストから1つ以上の選択肢を選んでもらうことに焦点を当てています。

簡単な複数選択プロンプトを設定する

Timは、自分のコードにすでにある2つのリストを示すことから始めます:

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

彼は、ユーザーが0個、1個、または多数の項目を選択する可能性があるため、favoriteNamesというList<string>を作成しています(0:53-1:01)。 そして、それをAnsiConsole.Promptの結果にnew MultiSelectionPrompt<string>()で代入しています(1:05-1:16)。

Tim は各選択が文字列オブジェクトであることを強調し、プロンプトはユーザーが選択した選択肢の配列またはリストを返すこと(1:20–1:26)。

次に、ユーザーをガイドするためのカスタムタイトルを追加します:

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

これは、プロンプトのトップに明確なヘッダーを設定します(1:31-1:50)。

ユーザー ガイダンスのための説明テキストを追加する

ティムはタイトルだけで終わりません。 彼はまた、プロンプトの操作方法をユーザーに伝えるための説明テキストも追加している(1:50)。

彼は次のように書きます:

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

Spectre Console はアクセントカラーのカスタマイズをサポートしているので、重要な部分を強調するために緑、青、黄色、灰色、または赤で指示を表示することができます。

重要なのは、ユーザーに伝えることです:項目を切り替えるにはスペースバーを押し、答えを受け入れるにはエンターキーを押してください (2:12)。 これにより、ユーザーにとって簡単なスクリプトになります。

選択肢の追加と結果の表示

次に、ティムは実際のデータを追加します。 最初は1つのリストでシンプルに。彼は .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)。 これは、最も簡単な作業バージョンを示しています。

選択グループによる複数リストへの移動

基本的なセットアップがうまくいったところで、ティムは"もう少し面白く"する(3:22)。 1つのリストではなく、normalNamesとfamilyNamesの2つのリストを持っています。

彼は、オリジナルの.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にティムが示した内容を要約する。 複数選択プロンプトは、通常の選択プロンプトと同じように動作しますが、どのような型を渡してもリストを返します(5:03-5:08)。

彼が行ったように指示テキストを追加することができ、選択グループを使用して整理し、一つのキーでグループ全体を選択することもできます(5:14–5:18)。 これにより、大規模または複雑なメニューが、ユーザーにとってより扱いやすくなります。

これは、Spectre Console が複雑なオブジェクトを扱うことができることも示唆しています。 ChoiceLabelプロパティを持つオブジェクトを提供することで、表示される内容を制御することができます。

選択肢グループとラベルの柔軟な使用

Timはまた、.AddChoiceGroup()を使うのに2つのグループを持つ必要はないことも明らかにしている(5:20-5:24)。 1つのグループであっても、グループ全体を一度に選択できるという利点があります。

彼は、より一般的なものにするために、"Select All"のようなグループ名をつけることができることを示している(5:34-5:42)。 一番上の項目を選択すると、下の項目がすべて切り替わります(5:44-5:47)。 また、例えばグループラベルを緑色や青色にして区別するなど、カラーハイライトを使用して、ユーザーをデフォルトのグループや必要なグループに誘導することもできます。これにより、プロンプトの構成に柔軟性が生まれます。

まとめ

Tim はビデオの締めくくりに、スペクトルコンソールでのマルチセレクションプロンプトの行い方を要約し、グループ選択のための選択グループの追加を含め(5:50–5:53)。 いつものように、ソースコードは説明の中にあります(5:57)。

ティム・コーリーのウォークスルーからの主な要点

  • Spectre Console のマルチセレクトでは、リストからゼロ、1、または多数の項目を選択できます。

  • ユーザーをガイドするためのタイトルと説明テキストを追加します; 必要な情報を強調するためにアクセントカラーを使用することができます。

  • 単純なリストには .AddChoices() を使用し、複数のリストやグループ化されたリストには .AddChoiceGroup() を使用してください。

  • ユーザーは、Spaceを押して選択を切り替え、Enterを押して承諾します。

  • グループラベル自体を切り替えて、すべての項目を一度に選択することができます。

  • プロンプトは、ChoiceLabelプロパティを持つ複雑なオブジェクトを表示することができます。

  • ページサイズとスクロールは、1ページに収まらないほどの選択肢がある場合に役立ちます。

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にメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。