2017-08-04 130 views
1

我在c#中編寫了一個小型控制檯應用程序,並且想要使用箭頭鍵來瀏覽我的菜單。爲了讓選定的選項對用戶可見,我想用白色背景和黑色文本突出顯示它,但只顯示單詞而不顯示整行。如何更改控制檯應用程序上文本的背景顏色C#

我試圖將光標定位在單詞的開頭,所以只有單詞會突出顯示,但它不起作用。請問有人能讓我朝正確的方向走?

for (int i = 0; i < filesArray.Length; i++) 
     { 
      Console.WriteLine(); 

      if (i == 0) 
      { 
       Console.BackgroundColor = ConsoleColor.White; 
       Console.ForegroundColor = ConsoleColor.Black; 
       Program.WriteAtTheMiddleOfTheScreen(filesArray[0]); 
       Console.ResetColor(); 
      } 
      else 
      { 

       Program.WriteAtTheMiddleOfTheScreen(filesArray[i]); 
      } 
     } 

     Console.WriteLine(); 
     Program.WriteAtTheMiddleOfTheScreen("Exit Program"); 

     Console.SetCursorPosition((Console.WindowWidth/2)-filesArray[0].Length+2, 2); 

That is what I want to achieve

That is how it looks like

public static void WriteAtTheMiddleOfTheScreen(string message) 
    { 
     message = String.Format("{0," + ((Console.WindowWidth/2) + (message.Length/2)) + "}", message); 
     Console.WriteLine(message); 
    } 
+0

看到這個:https://www.dotnetperls.com/console-color –

+1

謝謝你的回答。我寫的改變顏色的代碼實際上起作用,但它改變了整行直到字符串結束。我真正需要的是隻改變字符串的背景,因爲它看起來在我上傳的圖片上。 – Fix3r

回答

1

這將有助於

 for (int i = 0; i < 100; i++) 
     { 
      Console.WriteLine(); 
      string Text = "MAP" + i; 
      Console.SetCursorPosition((Console.WindowWidth - Text.Length)/2, Console.CursorTop); 
      if (i == 0) 
      { 
       Console.BackgroundColor = ConsoleColor.White; 
       Console.ForegroundColor = ConsoleColor.Black;      
       Console.WriteLine(Text); 
       Console.ResetColor(); 
      } 
      else 
      { 
       Console.WriteLine(Text); 
      } 
     } 

result

+0

謝謝! 我的問題是因爲我有一個方法,在控制檯屏幕中間寫入所有內容。我改變了我的輸出,而不是 [程序。WriteAtTheMiddleOfTheScreen(filesArray [1]);] 我做 [Console.WriteLine(filesArray [1]);] 你的回答給了我所需要的光。謝謝。 – Fix3r

0

C# Console Color Tutorial 這個頁面有所有你需要修改控制檯應用程序的顏色。

Console.BackgroundColor = ConsoleColor.Blue; 
    Console.ForegroundColor = ConsoleColor.White; 
    Console.WriteLine("White on blue."); 
    Console.WriteLine("Another line."); 

上面的代碼將改變控制檯的背景和前景色。

+0

請不要發佈鏈接的答案。此外,您的鏈接已損壞。 –

+0

yap肯定的事情已經改變了它...謝謝你... –

2

Console類支持兩個屬性稱爲ForegroundColorBackgroundColor

MSDN: System.Console.ForegroundColorMSDN: System.Console.BackgroundColor

(提示:使用Microsoft Visual Studio,您可以對Console光標,然後按Ctrl +空格獲得通過Console提供的所有屬性的列表)

您可以使用System.ConsoleColor枚舉的成員設置這些屬性,其中包含White,Blue等成員。

請參閱MSDN: System.ConsoleColor

因此,您將BackgroundColor屬性設置爲某種顏色,請執行System.Console.Write(),然後將BackgroundColor設置爲其他值,依此類推。

請記住,空間是用背景顏色繪製的,因此爲了防止屏幕區域被塗上不需要的背景色,請勿將BackgroundColor屬性設置爲不需要的值並在其中寫入空格。

+1

感謝您的回答。我實際上可以改變文字和背景的顏色,但不是我想要的方式。我編輯了我的問題併發布了兩張照片:一張顯示它應該是什麼樣子,另一張顯示它的外觀如何。 感謝您的Ctrl +空間提示,它現在幫助我與其他事情,並將在未來有用。 – Fix3r

+0

您可能想要展示如何實現'Program.WriteAtTheMiddleOfTheScreen()'方法。 –

+0

我更新了問題幷包含了該方法。謝謝。 – Fix3r

相關問題