2010-12-15 10 views
5

क्या विजुअल स्टूडियो 2010 में टैब नियंत्रण में किसी टैब के लिए कीबोर्ड शॉर्टकट सेट करने का कोई आसान तरीका है? क्या कोई ऐसी संपत्ति है जिसे मैं सेट कर सकता हूं?मैं Windows फॉर्म टैबकंट्रोल के लिए कीबोर्ड शॉर्टकट कैसे सेट अप कर सकता हूं?

मैंने ऑनलाइन देखा, लेकिन मैंने देखा सभी लेख बहुत भ्रमित थे।

+1

विंडोज फॉर्म ऐप? ASP.NET? WPF? नियंत्रण की तीसरी पार्टी पुस्तकालय? –

+0

पीछे कोड में वीबी का उपयोग कर विंडोज फॉर्म ऐप। – chama

+1

यह अभी तक क्यों बंद नहीं हुआ है? क्या आपको कुछ और चहिए? –

उत्तर

5

दुर्भाग्य से, ऐसी कोई संपत्ति नहीं है, लेकिन इस कार्यक्षमता को लागू करना मुश्किल नहीं है, या तो। आपके आवेदन के डिजाइन के आधार पर विचार करने के दो तरीके हैं।

  1. रूप है कि TabControl होस्ट करता है पहले से ही एक मेनू प्रणाली का उपयोग करता है, यह लगभग स्थापित करने के लिए तुच्छ है। सबसे पहले, आपको एक मेनू कमांड जोड़ने की आवश्यकता है जो आपके TabPage पर आपके TabControl में स्विच हो। फिर, आप उस मेनू आइटम में एक कीबोर्ड शॉर्टकट जोड़ सकते हैं (जो MenuItem/ToolStripMenuItem की एक साधारण संपत्ति) है, ताकि जब भी वह कुंजी दबाई जाए, तो मेनू कमांड निष्पादित किया जाता है, जो उचित TabPage पर स्विच करता है।

  2. हालांकि, एक मेनू सिस्टम हर रूप के लिए उपयुक्त नहीं हो सकता है। यदि ऐसा है, तो आपको थोड़ा और काम करना होगा। असल में, आपको KeyPreview प्रपत्र की प्रॉपर्टी सेट करने की आवश्यकता है जो आपके TabControl को सही पर होस्ट करता है और टैब स्विच करने के लिए उपयोग करने वाले कीबोर्ड शॉर्टकट का पता लगाता है।

    स्थापना एक रूप के KeyPreview property कि प्रपत्र महत्वपूर्ण घटनाओं प्राप्त करने के लिए उन घटनाओं नियंत्रण है कि ध्यान केंद्रित किया को पारित करने से पहले अनुमति देता है। इस विधि के लिए काम करना महत्वपूर्ण है, अन्यथा, फॉर्म KeyDown इवेंट हैंडलर में आपका कोड कभी भी उस कुंजीस्ट्रोक का पता नहीं लगाएगा जिसे आप जाल करना चाहते हैं। प्रत्येक कुंजीस्ट्रोक को प्रसंस्करण समाप्त करने के बाद ही उन्हें नियंत्रण में पारित किया जाएगा जो आम तौर पर उन्हें प्राप्त होगा।

    तो, एक बार आप इस संपत्ति निर्धारित किया है, तो आप के लिए हैंडलर के लिए कोड जोड़ने की आवश्यकता आपके प्रपत्र के KeyDown event उस के लिए जो भी कुंजीपटल शॉर्टकट का उपयोग करना चाहते देखता है, और फिर उसके अनुसार टैब स्विच करता है, तो उसे पता चलता है कि उन कुंजियों में से एक दबाया जाता है अन्यथा, आपको कुछ भी करने की ज़रूरत नहीं है।

    उदाहरण के लिए, यदि आप तीन TabPages अपने फार्म पर, आप तय कर सकते हैं कि F2 पहले टैब में स्विच होगा, F3 दूसरे में स्विच हो जाएगा, और F4 तीसरे में बदल जाएगा (हालांकि जाहिर है, आप जो भी चाबियाँ चाहते थे उसका उपयोग कर सकते हैं)।

    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown 
        Select Case e.KeyCode 
         Case Keys.F2 
          'Switch to the first tab page 
          MyTabControl.SelectedIndex = 0 
         Case Keys.F3 
          'Switch to the second tab page 
          MyTabControl.SelectedIndex = 1 
         Case Keys.F4 
          'Switch to the third tab page 
          MyTabControl.SelectedIndex = 2 
        End Select 
    End Sub 
    
0

आप कस्टम शॉर्टकट कीस्ट्रोक्स लागू करने के लिए एक नियंत्रण के ProcessCmdKey() विधि ओवरराइड कर सकते हैं: तब आप अपने प्रपत्र के KeyDown ईवेंट हैंडलर के लिए निम्न कोड उन कुंजियों को उदास किया जा रहा का पता लगाता है और उसके अनुसार कार्य करता है कि जोड़ना होगा। इस तरह से करने का बड़ा फायदा यह है कि कीस्ट्रोक केवल तभी काम करेगा जब टैब नियंत्रण या टैब पृष्ठों पर नियंत्रणों में से एक पर ध्यान केंद्रित किया जाए। प्रोजेक्ट + क्लास जोड़ें, नीचे दिखाए गए कोड को पेस्ट करें और संकलित करें। टूलबॉक्स के शीर्ष से अपने फॉर्म पर नया नियंत्रण ड्रॉप करें।

Public Class MyTabControl 
    Inherits TabControl 

    Protected Overrides Function ProcessCmdKey(ByRef msg As Message, ByVal keyData As Keys) As Boolean 
     If keyData >= Keys.F1 And keyData <= Keys.F10 Then 
      Me.SelectedIndex = keyData - Keys.F1 
      Return True 
     End If 
     Return MyBase.ProcessCmdKey(msg, keyData) 
    End Function 

End Class 

आप समारोह चाबियाँ कोई फर्क नहीं पड़ता फार्म पर क्या नियंत्रण ध्यान केंद्रित किया काम करने के लिए तो आप फार्म की ProcessCmdKey विधि ओवरराइड करना चाहिए चाहते हैं।

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