2012-07-18 47 views
0

可能重複:
how to handle key press event in console application檢測按鍵在控制檯

一個簡單的問題。

我正在寫一個簡單的基於文本的冒險遊戲的樂趣,我卡在第一部分已經!如何使我的控制檯檢查按鍵I.E:按Enter鍵繼續!

+0

可能重複:http://stackoverflow.com/q/8898182/946904 – 2012-07-18 21:57:17

+0

技術上講,它不是,我其實並沒有要求要顯示的關鍵。 – 2012-07-18 21:58:35

+1

你是對的,它不是一個確切的重複,但如果你在這裏比較答案和答案,你會看到他們非常相似。 – 2012-07-18 22:03:33

回答

8

您可以使用

Console.ReadKey(); 

閱讀1個鍵。那麼你可以做這樣的事情:

string key = Console.ReadKey().Key.ToString(); 
if(key.ToUpper() == "W") 
    Console.WriteLine("User typed 'W'!"); 
else 
    Console.WriteLine("User did not type 'W'"); 

或者:

if(key == "") 
    Console.WriteLine("User pressed enter!"); 
else 
    Console.WriteLine("User did not press enter."); 

如果你如果用戶鍵入任何東西,但印刷機後進入不在乎,你可能只是做:

// Some code here 
Console.ReadLine(); 
// Code here will be run after they press enter 
+0

如果用戶按下空格鍵? – Steve 2012-07-18 22:31:01

+0

我編輯了帖子。謝謝。 – 3aw5TZetdf 2012-07-19 06:13:49

1
Console.Write("Press Enter to continue!") 
Console.ReadLine(); 

直到用戶點擊Enter,程序纔會繼續。

您也可以使用Console.ReadKey檢查其他特定鍵:

void WaitForKey(ConsoleKey key) 
{ 
    while (Console.ReadKey(true).Key != key) 
    { } 
} 

用法:

Console.Write("Press 'Y' to continue."); 
WaitForKey(ConsoleKey.Y); 
+0

如果我錯了,請糾正我,但是無論輸入什麼內容,這都不會讓它繼續嗎? – 2012-07-18 21:53:56

+0

@NortonTaylor這會很奇怪,說*按回車繼續!* – user845279 2012-07-18 21:55:26

+0

@NortonTaylor:你說得對,它將允許用戶繼續,無論輸入什麼*文本*;但直到用戶實際按下Enter鍵後纔會繼續。無論如何,我已經添加了一個等待任意密鑰的方法示例。 – 2012-07-18 21:58:22

6

Console class包含讀取和寫入到 '控制檯'

所需的所有方法

例如

Console.Write("Press Enter to continue!") 
do 
{ 
    ConsoleKeyInfo c = Console.ReadKey(); 
} while (c.Key != ConsoleKey.Enter); 
+0

非常感謝你! – 2012-07-18 21:56:15

0

一個事件,這將做到這一點。

private void OnKeyDownHandler(object sender, KeyEventArgs e) 
{ 
     if (e.Key == Key.Return) 
     { 
      Console.Write("Press Enter to continue!") 
     } 
} 
+0

OP說這是一個控制檯應用程序...編輯:沒關係..你做了鬼祟的忍者編輯! – 2012-07-18 21:58:12

+0

然後在那種情況下,'Console.ReadKey()'可能是最好的選擇。 – 2012-07-18 22:00:23