2014-05-02 10 views
9

टाइप करते समय कंसोल विंडो से इनपुट छुपाएं मैं उपयोगकर्ता के इनपुट को पढ़ने के लिए Console.ReadLine का उपयोग कर रहा हूं। हालांकि, मैं टाइप करते समय कंसोल स्क्रीन पर इनपुट किए गए टेक्स्ट को छिपाना/बहिष्कृत करना चाहता हूं। उदाहरण के लिए, जब उपयोगकर्ता "ए" लिखता है, तो यह कंसोल पर "ए" लिखता है और फिर मेरे पास "ए" मान के साथ एक चर होगा। हालांकि, मैं कंसोल के आउटपुट पर "ए" लिखा नहीं चाहता हूं।सी # कंसोल -

मैं यह कैसे कर सकता हूं?

+1

'कंसोल। रीडलाइन 'इस तरह से सेटअप है कि यह इनपुट को सीधे कंसोल पर वापस ले लेता है। विशेष उपयोग के मामलों के लिए (जैसे कि आप एक पासवर्ड दर्ज करना चाहते थे और नहीं चाहते थे कि लोग टाइप किए गए अक्षरों को देखें), आपको पात्रों को एक-एक-एक (जैसा कि @ojblass ने इंगित किया है) को कैप्चर करना होगा और उन्हें एक चर में स्टोर करना होगा स्वयं। या यदि आप चाहें, तो आप कंसोल के आउटपुट में '*' की एक श्रृंखला प्रदर्शित कर सकते हैं, या यदि आप चाहें तो उन्हें उड़ने वाले बंदरों के साथ भी बदल सकते हैं। – OnlineCop

+1

संबंधित: http://stackoverflow.com/q/3404421/945456 –

उत्तर

15

कंसोल। रीडकी (सत्य) उपयोगकर्ता कुंजी को छुपाता है। मुझे कंसोल पर विश्वास नहीं है। पढ़ें() ऐसी क्षमता प्रदान करता है। यदि आवश्यक हो तो आप एक लूप रीडिंग कुंजियों में एक बार में प्रवेश कर सकते हैं जब तक कि एंटर दबाया न जाए। उदाहरण के लिए this link देखें।

+0

मैं सिर्फ एक कुंजी नहीं, पूर्ण इनपुट पढ़ना चाहता हूं। – user3265040

+5

एक लूप में बैठें और पोस्ट किए गए उदाहरण के अनुसार कुंजी पढ़ें। स्ट्रिंगबिल्डर का उपयोग करने के लिए – ojblass

19

यहां एक छोटा कार्यान्वयन है। विचार

System.Console.Write("password: "); 
string password = null; 
while (true) 
{ 
    var key = System.Console.ReadKey(true); 
    if (key.Key == ConsoleKey.Enter) 
     break; 
    password += key.KeyChar; 
} 
+5

बेहतर हो सकता है – m4tt1mus

0

के लिए THX @ojblass मैं dataCore द्वारा जवाब में कोड और m4tt1mus द्वारा सुझाव से इस पद्धति का निर्माण किया। मैंने बैकस्पेस कुंजी के लिए समर्थन भी जोड़ा।

private static string GetHiddenConsoleInput() 
{ 
    StringBuilder input = new StringBuilder(); 
    while (true) 
    { 
     var key = Console.ReadKey(true); 
     if (key.Key == ConsoleKey.Enter) break; 
     if (key.Key == ConsoleKey.Backspace && input.Length > 0) input.Remove(input.Length - 1, 1); 
     else if (key.Key != ConsoleKey.Backspace) input.Append(key.KeyChar); 
    } 
    return input.ToString(); 
} 
संबंधित मुद्दे