कुंजीपटल chords विशेष रूप से, मैं नहीं मानता के सवाल के जवाब में इस बिंदु पर एक रेडीमेड विकल्प आपके लिए उपलब्ध नहीं है।
हालांकि, यह मॉडल के लिए काफी सरल होना चाहिए। मैं एक एकल वर्ग, शायद KeyboardChordProvider
बनाउंगा। इसे फॉर्म स्तर पर कीबोर्ड घटनाओं के बारे में जानना होगा।जैसा कि कहीं और कहा गया है, Form.KeyPreview
संपत्ति true
होनी चाहिए। यह प्रदाता Form.KeyPress
ईवेंट की सदस्यता लेने के लिए पर्याप्त हो सकता है। यदि आप फॉर्म में पास हुए हैं तो आप प्रदाता के कन्स्ट्रक्टर में यह सब कर सकते हैं।
आपको प्रदाता के साथ संभावित कीस्ट्रोक पंजीकृत करना होगा।
आंतरिक रूप से यह उदाहरण वर्तमान स्थिति को ट्रैक करेगा। जब भी एक कीस्ट्रोक मनाया जाता है जो तार की पहली कुंजी का प्रतिनिधित्व करता है, तो आप प्रदाता के राज्य को अपडेट करेंगे और एक ईवेंट बढ़ाएंगे ताकि एक ग्राहक टेक्स्ट सेट कर सके: (CTRL + W) दबाया गया था। तार की दूसरी कुंजी की प्रतीक्षा कर रहा है ...
यदि अगला कीस्ट्रोक संभावित माध्यमिक विकल्प से मेल खाता है, तो आपके पास एक मैच है और ChordPressed
ईवेंट बढ़ा सकता है जिसमें स्ट्रोक का विवरण शामिल है। वैकल्पिक रूप से, आप केवल एक विशेष कॉलबैक कॉल कर सकते हैं जो प्रदाता को पंजीकृत होने पर प्रदाता को दिया गया था (स्विच स्टेटमेंट या ChordPressed
इवेंट हैंडलर में कुछ अन्य प्रेषण से बचने के लिए)।
यदि किसी भी समय, एक कीस्ट्रोक संभावित अगले विकल्प से मेल नहीं खाता है, तो आप प्रदाता की स्थिति को रीसेट कर देंगे।
प्रदाता के लिए आंतरिक आप पेड़ संरचना का उपयोग कर संभावित कीस्ट्रोक मॉडल कर सकते हैं। प्रदाता की वर्तमान स्थिति सिर्फ एक विशेष पेड़ नोड है। शुरुआत में, रूट नोड सक्रिय होगा। यदि कोई बच्चा एक कीस्ट्रोक से मेल खाता है तो यह अगले स्ट्रोक की प्रत्याशा में वर्तमान नोड बन जाता है। अगर बच्चा एक पत्ता नोड था, तो एक संपूर्ण तार मिलान हो गया है और आप ChordPressed
ईवेंट (स्ट्रोक की श्रृंखला को पार करते हुए उस बिंदु पर पहुंचे) उठाएंगे या पत्ते में संग्रहीत कॉलबैक का आह्वान करेंगे। जब भी कोई कीस्ट्रोक किसी बच्चे से मेल नहीं खाता है, तो रूट नोड को सक्रिय करने के लिए वापस रीसेट करें।
मुझे लगता है कि यह डिज़ाइन जो आप चाहते हैं उसे प्राप्त करेंगे।
स्रोत
2008-10-11 10:17:49
एक कीबोर्ड शॉर्टकट तार एक एकाधिक कुंजी शॉर्टकट है। Ctrl + W, C की तरह, जो क्लास-व्यू खोलता है। जब कुंजी का पहला सेट दबाया जाता है (CTRL + W) संदेश "(CTRL + W) दबाया गया था। तार की दूसरी कुंजी की प्रतीक्षा कर रहा है ..." स्थिति स्ट्रिप में दिखाई देता है। मैं इसे बिल्कुल पुन: पेश करना चाहता हूं। – JJS
मुझे WPF के लिए इसका कार्यान्वयन मिला। http://insystusa.com/Products.aspx – JJS
क्या यह एक तार के * विपरीत * नहीं है? प्रस्तावित समाधान ड्रू के लिए –