2008-09-05 26 views
12

.NET (C#) कंसोल एप्लिकेशन के लिए टैब पूर्णता को कार्यान्वित करने के तरीके पर कोई विचार? और मुझे लगता है कि चलाया जाता है एक आवेदन के भीतर मतलब और उसके बाद उपयोगकर्ता इनपुट के लिए लूप (जैसे अगर आप किसी भी तर्क के बिना ftp.exe चलाने), इस तरह:.NET कंसोल एप्लिकेशन टैब प्राप्ति

 string line = string.Empty; 
     while (line != "exit") 
     { 
      //do something here 
      Console.ReadLine(); 
     } 

मैं मैं शायद वास्तव में ReadLine उपयोग नहीं कर सका पता है, लेकिन मैं उसी बिंदु पर टैब पूर्ण करने में सक्षम होना चाहता हूं जहां आप उपयोगकर्ता से इनपुट पुनर्प्राप्त करते हैं।

उत्तर

5

मोनो परियोजना http://tirania.org/blog/archive/2008/Aug-26.html मैं किसी और दिन इसके साथ खेला से इस कोड पर एक नजर डालें। यह बहुत कमांड लाइन संपादन करता है, लेकिन मुझे नहीं लगता कि यह लाइन पूर्ण होने पर है।

8

एक कंसोल करें। रीडकी()।

यदि आपको कोई टैब मिलता है, तो कमांड बफर में आपके पास क्या है, और अपने उपलब्ध कमांड के माध्यम से लूप देखें। यदि someCommand.Name.BeginsWith(currentinput) है, तो आपके पास विजेता है, और आप संभावित आदेशों की एक सूची स्क्रीन पर लिख सकते हैं।

तो वहाँ केवल एक ही (टीएम) आप क्या उपयोगकर्ता द्वारा लिखा गया था के साथ यह स्थानापन्न कर सकते हैं :)

+0

रीडकी का उपयोग कर रीडलाइन का पैरारलल में नहीं कहा जा सकता है? तो इसका मतलब है कि आप रीडलाइन कार्यक्षमता को ढीला करते हैं, और आपको रीडकी पर लूप करना होगा और इनपुट को मैन्युअल रूप से प्रदर्शित/प्रदर्शित करना होगा। रीडलाइन में "अप" कुंजी के साथ इतिहास याद करने की कार्यक्षमता है, आप इसे खो देंगे, या रीडकी का उपयोग करके इसे पूरी तरह से रिकोड करने की आवश्यकता है। सी 14 एन के लिए सर्वश्रेष्ठ हाइब्रिड समाधान ढूंढना होगा। (Async रीडलाइन का उपयोग करने की तरह?) –

3

मैं एक ऐप्स मैंने बनाया करने के लिए इस कार्यक्षमता जोड़ने के लिए एक छोटा सा lib बनाया:

https://github.com/fjunqueira/hinter

यह आपकी आवश्यकताओं के अनुरूप नहीं हो सकता है, लेकिन आप इसे संपादित करने के लिए स्वतंत्र महसूस कर सकते हैं।

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