2012-07-25 13 views
7

में दबाई गई कोई भी कुंजी मुझे यह जांचने की ज़रूरत है कि कंसोल एप्लिकेशन में कोई भी कुंजी दबाई गई है या नहीं। कुंजी कुंजीपटल में कोई भी कुंजी हो सकती है। की तरह कुछ:यह जांचना कि क्या कंसोल अनुप्रयोग C#

if(keypressed) 
{ 

//Cleanup the resources used 

} 

मैं इस के साथ आया था:

ConsoleKeyInfo cki; 
cki=Console.ReadKey(); 

if(cki.Equals(cki)) 
Console.WriteLine("key pressed"); 

यह संशोधक कुंजियों को छोड़कर सभी कुंजी के साथ अच्छी तरह से काम करता है - मैं कैसे इन कुंजियों की जाँच कर सकते हैं?

+0

आपने क्या प्रयास किया? – BugFinder

+0

ConsoleKeyInfo cki; CKI = Console.ReadKey(); अगर (cki.Equals (cki)) Console.WriteLine ("कुंजी दबाया"); संशोधक कुंजी को छोड़कर सभी कुंजियों के साथ अच्छी तरह से काम करता है। – user1502952

+0

वाह मैंने आपके प्रश्न को बहुत बदल दिया है क्योंकि मैंने इसका उत्तर दिया है .. – BugFinder

उत्तर

12

यह आपकी मदद कर सकते हैं:

Console.WriteLine("Press any key to stop"); 
do { 
    while (! Console.KeyAvailable) { 
     // Do something 
    }  
} while (Console.ReadKey(true).Key != ConsoleKey.Escape); 

आप एक if में इसका उपयोग करना चाहते, तो आप इस कोशिश कर सकते हैं:

ConsoleKeyInfo cki; 
while (true) 
{ 
    cki = Console.ReadKey(); 
    if (cki.Key == ConsoleKey.Escape) 
    break; 
} 

किसी भी कुंजी के लिए बहुत सरल है: if को हटा दें।


@DawidFerenczy जैसा कि बताया जा हम ध्यान दें कि Console.ReadKey() ब्लॉक कर रहा है है। यह निष्पादन रोकता है और एक कुंजी दबाए जाने तक प्रतीक्षा करता है। संदर्भ के आधार पर, यह आसान नहीं हो सकता है (नहीं)।

यदि आपको निष्पादन को अवरुद्ध करने की आवश्यकता नहीं है, तो बस Console.KeyAvailable का परीक्षण करें। इसमें true होगा यदि कोई कुंजी दबाई गई थी, अन्यथा false

+1

मत भूलना, जबकि मेरा उत्तर चिह्नित करने के लिए करता है, तो यह अच्छा है से बचने की जरूरत की। –

+0

किसी भी कुंजी दबाए – user1502952

+0

के लिए काम करना चाहते हैं बस 'if' को हटा दें। –

5

यदि आप अनब्लॉक करना चाहते हैं तो Console.KeyAvailible पर एक नज़र डालें।

do { 
    Console.WriteLine("\nPress a key to display; press the 'x' key to quit."); 

// Your code could perform some useful task in the following loop. However, 
// for the sake of this example we'll merely pause for a quarter second. 

    while (Console.KeyAvailable == false) 
     Thread.Sleep(250); // Loop until input is entered. 
    cki = Console.ReadKey(true); 
    Console.WriteLine("You pressed the '{0}' key.", cki.Key); 
    } while(cki.Key != ConsoleKey.X); 
} 

यदि आप तो अवरुद्ध करना चाहते हैं Console.ReadKey का उपयोग करें।

+0

क्या यह उपयोग करना संभव है जैसे (cki.key == ConsoleKey.Enter)। बजाय ConsoleKey.Enter निर्दिष्ट करते समय, एक ही बार में सभी चाबियाँ के लिए जाँच bcoz मैं पाश – user1502952

संबंधित मुद्दे