[英]Making a basic console c# application with a menu based on the key that is pressed
[英]Making simple console menu in c#
我想在C#中創建一個簡單的菜單:這樣的東西應該從控制台打印出來:
FirstOption
SecondOption
Exit
到目前為止,這里是我的代碼(命名和封裝存在問題,但這只是快速原型,花了大約30分鍾):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
Menu StartGame = new Menu("Start Game");
Menu EndGame = new Menu("End Game");
Console.WriteLine(StartGame);
Console.WriteLine(End Game);
EndGame.isChecked = false;
}
}
class Menu
{
private string Content;
public bool isChecked = true;
public Menu(string Content)
{
this.Content = Content;
}
public void CheckCondition()
{
if (isChecked)
{
Console.BackgroundColor = ConsoleColor.White;
Console.ForegroundColor = ConsoleColor.Black;
}
else
{
Console.ResetColor();
}
}
public override string ToString()
{
this.CheckCondition();
return this.Content;
}
}
}
這個想法是當點擊一個按鈕時,菜單項突出顯示。 當一個人到達最后一個菜單項時,他無法再次按下DownArrow
,第一個項目和UpArrow
。
我完全堅持這個。
我不完全確定..可能這可以幫助你開始。
while (true)
{
var ch = Console.ReadKey(false).Key;
switch (ch)
{
case ConsoleKey.UpArrow:
HighlightStartGame();
break;
case ConsoleKey.DownArrow:
HighlightEndGame();
break;
}
}
static void HighlightStartGame()
{
Console.Clear();
Console.ResetColor();
StartGame.isChecked = true;
Console.WriteLine(StartGame);
EndGame.isChecked = false;
Console.WriteLine(EndGame);
}
static void HighlightEndGame()
{
Console.Clear();
Console.ResetColor();
StartGame.isChecked = false;
Console.WriteLine(StartGame);
EndGame.isChecked = true;
Console.WriteLine(EndGame);
}
不,你不能這樣做,因為Win32控制台不支持這些方法。 但是,您可以使用GDI在控制台窗口上繪圖。
問題是控制台無法處理任何鼠標事件。 你想如何點擊菜單? 你必須用鑰匙做所有事情。 您可以選擇定義擊鍵(如Ctrl-F或Alt-F表示“FirstEntry”)以激活菜單項,或使用箭頭鍵實現導航,允許您在字段(按鈕或菜單字段)中移動和文本字段)。 這不是內置的,因此您必須在代碼中執行所有操作。 您必須使用控制台的SetCursorPosition
和ReadKey
方法才能實現此目的。 我記得曾經在VT100終端上做過這個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.